[
Lists Home |
Date Index |
Thread Index
]
No, I don't think you can do this within a single XPath 1.0 expression.
In XPath 2.0 you can do
for $x in . return /doc/state[@id=$x/@state]
Michael Kay
> -----Original Message-----
> From: Putman, Harold [mailto:PutmanH@diebold.com]
> Sent: 22 December 2003 15:43
> To: 'xml-dev@lists.xml.org'
> Subject: [xml-dev] XPath predicate and context
>
>
> Is there any way to get information from the context of the
> current XPath expression, and use that inside a predicate
> expression. For example, if I have <doc>
> <state id="OH">Ohio</state>
> <state id="PA">Pennsylvania</state>
> <home state="PA"/>
> <home state="OH"/>
> </doc>
> I want to write an XPath expression that will give me the
> name of the state assigned to the home element. Something
> like this works as long as long as there is only one home:
> /doc/state[@id=/doc/home/@state] But what I want to do is
> evaluate an XPath at any home node and get the state name for
> that node. Something like: /doc/state[@id=current()/@state]
> Where current would be the context node when the XPath
> evaluation starts. The problem is that current() is not a
> part of XPath... In XSLT I would do this using a variable.
> <xsl:variable name="state">
> <xsl:value-of select="@state"/>
> </xsl:variable>
> <xsl:value-of select="/doc/state[@id=$state]"/>
> But, it seems like there should be a way to do this with
> XPath alone. Is there a way?
>
> Thanks,
> Harold Putman
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org
> <http://www.xml.org>, an initiative of OASIS
<http://www.oasis-open.org>
The list archives are at http://lists.xml.org/archives/xml-dev/
To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>
|