[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xmlblaster] get call fix
Chris Jones wrote:
Your suggestion removed the unwanted results, but I am wondering why?
Using *[((metadata/.....))] should have returned only results that
matched and the <key oid="..."> </key> nodes did not contain
any matching tree with metadata/... .
Could you explain how adding /xmlblaster/key/metadata fixed this?
you can cut and paste the internal DOM from an xmlBlaster dump (type 'd'
in the console)
just take everything inside the <XmlKeyDom> tag and you have
exactly what the DOM looks inside xmlBlaster.
Put this into a file, lets call it ChrisKey.xml and now you can play
java DomQueryTest ChrisKey.xml
(The DomQueryTest is in the xmlBlaster.jar file just to test XPath queries).
The above query returns the matched DOM tree and the found key oids which
a subscriber would subscribe to.
Here is a typical DOM:
<key oid="__sys__Login" />
<key oid="NewSchemaFormat_1.0" domain="DPASA">
If you use "*[(( ...." and your expression matches somewhere in the tree,
it will return the COMPLETE tree, our lookup parses the returned tree
to find all key oids -> and it will find ALL oid.
The problem is the "*" which returns everything.
Writing "/xmlBlaster/key" instead selects the matching subtrees
before your expression is applied - and that is what we want.
Note the absolute notation "/xmlBlaster/key/metadata" is much
better performing in XSL as relative notations like "//metadata".