[XML-SIG] PyXML XPath woes
Thomas B. Passin
tpassin at comcast.net
Sat Feb 7 21:49:14 EST 2004
Matt Patterson wrote:
>
> I've got an XML file in which I want to locate all elements with the
> attribute boundary set to 'true'. I use the following XPath with 4DOM:
>
> //*[@boundary='true']
>
> like so:
> boundaryFinder = Compile("//*[@boundary='true']")
> context = Context(self.document)
> # evaluate the expression and get a nodeList
> boundaryNodes = boundaryFinder.evaluate(context)
>
> But the results of the XPath do not return all the nodes which match!
>
How many nodes did you get and how many are actually there?
You have an encoding problem with the file you linked to. It is encoded
in iso-8859-1 but with no encoding declaration it is treated as utf-8.
Unfortunately there are some non-utf-8 characters in it, so it is not
well-formed. Thus any results you get would be suspect. In fact, it
should not parse sucessfully at all.
Once I added an encoding declaration for iso-8859-1, running the xpath
expression in XML Cooktop I got 47 @boundary nodes, the same as Luis
Miguel said he found.
Fix your encoding (I have no idea how you will do that, but presumably
either a Framemaker setting or a bit more preprocessing would do it).
Then follow Luis Miguel's example and see if you get the same results.
Cheers,
Tom P
More information about the XML-SIG
mailing list