I asked a similar question a long time ago (and repeated it when the latest draft came out). I didn't get an aswer then, but was playing with it yesterday and worked out a (trivial) solution. You need to be using something which conforms to the latest draft (or supports variables properly). It is also possible to do something non-standard using the MS processor.
XML Fragment:
-----
<area name="foo">
<page name="index">
...
</page>
<page name="foo">
...
</page>
</area>
-----
XSL Fragment:
-----
<xsl-template match="page">
<!-- ** The trick is to set a variable, because you can control the context of the variable when you set it -->
<!-- extract the parents "name" -->
<xsl:variable name="parent" expr="from-parent(node())/from-attributes(name)" />
<!-- Now you can compare the current name with the variable. It doesn't matter what context you use because the variable is now set -->
<xsl:if test="from-attributes(name)=$parent">
Found element .....
</xsl:if>
</xsl-template>
-----
Hope this helps. It certainly should work in the latest version of XT, although I might have made an error when I translated it!
Alistair
PS I deliberately used the unified (aka long) syntax to make it clear that it worked only with the new version
>>> James Kerr <james@xxxxxxxxxxxx> 06/07 9:22 pm >>>
Hi,
I am trying to learn XSL and have a question:
How would I form a match statement for an xsl:if that would match a
parent's value with the value of the current element? In other words, I
have a list of sub-elements and want to determine which element has the
same value as the parent.
Thanks,
-James
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
- newbie xsl:if
- James Kerr - Mon, 07 Jun 1999 16:22:57 -0400
- <Possible follow-ups>
- Alistair MacDonald - Wed, 09 Jun 1999 11:24:08 +0100 <=
|
|