Last active
August 29, 2015 14:15
-
-
Save krig/f510d4a0e66b13361424 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Här är ett konkret exempel: | |
# | |
# 1. Inga namespaces: | |
def node_type_optional_no_namespaces(self): | |
path = '//element[@name="nodes"]//element[@name="node"]/optional/attribute[@name="type"]' | |
return len(schema.rng_xpath(path)) > 0 | |
# 2. Namespaces: | |
def node_type_optional_namespaces(self): | |
ns = {'t': 'http://relaxng.org/ns/structure/1.0'} | |
path = '//t:element[@name="nodes"]//t:element[@name="node"]/t:optional/t:attribute[@name="type"]' | |
return len(schema.rng_xpath(path, namespaces=ns)) > 0 | |
# Koden i exempel 2 är fragil: Namespacet är hårdkodat. | |
# För att inte hårdkoda namespacet skulle jag behöva något sätt | |
# att plocka ut det ur dokumentet, förutsatt att det bara finns | |
# ett namespace (annars måste jag på något sätt kunna avgöra vilket | |
# av namespacen som applicerar på elementen jag är intresserad av), | |
# vilket innebär att jag måste lägga till en funktion till schemas API. | |
# Skulle någon få för sig att "uppgradera" namespacet så går min kod | |
# nu sönder. Hade jag bara kunnat ignorera namespacet hade min kod | |
# fungerat lika bra! | |
# Fler API-anrop = fler buggar. Fler parametrar = fler buggar. | |
# Mer kod = fler buggar. När resulterar XML namespaces i färre buggar? | |
# Det är definitivt inte här. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment