xsl-list
[Top] [All Lists]

Re: [xsl] relative . not working in complex xpath

2014-07-21 06:01:02



"." within a predicate refers to the node that the predicate
is being applied to, so the context item for ./xs:extension is the same as
the context node for @name.
If you're using XSLT you can often get
arround this using the current() function. In pure XPath 1.0, join queries
like this are difficult and not always possible. Switch to XPath 2.0 or
XQuery if possible.
 
Michael
Kay
Saxonica
 
I have selected an element from
an XSD file and want to find its base

class

to accumulate all xs:attributes.

So I first select the node in question with

//xs:complexType[@name='SomeType']



Then I want to go on from there and collect all xs:attribute

node.selectNodesNS(".//xs:attribute |


//xs:complexType[@name=./xs:extension/@base]/@name]//xs:attribute",
xsns)



Unfortunately that only gives me the attributes of the
"node" I perform

the

select from.

I get the correct results if I explicitly use the node in my
query,

instead

of the relative expression of "." in
"@name=./xs:extension/@base" like

this:



node.selectNodesNS(".//xs:attribute | //xs:complexType[@name
=


//xs:element[@type=//xs:complexType[@name='SomeType']//xs:extension/@base]/@name]//xs:attribute",

xsns)



What is going on here?

Using XPath 1.0 with MSXML.



Thanks!


--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>