xsl-list
[Top] [All Lists]

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

2014-07-21 11:42:48
Ah I see. Unfortunately MS still offers no XPath2 or XQuery in its msxml
system components in Win8.1. Seems to me they have abandoned the format
long ago.


On Mon, Jul 21, 2014 at 1:01 PM, mike(_at_)saxonica(_dot_)com <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

"." 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 <-list/758629> (by
email <>)

--~----------------------------------------------------------------
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>