|
Subject: Re: [xsl] XPath expression confusion From: David Carlisle <davidc@xxxxxxxxx> Date: Thu, 12 Jan 2006 23:47:36 GMT |
> <xsl:variable name="all-reqs" select="document('requirements.xml')/requirements//requirement/number" />
>
> <xsl:template match="/">
> <un-assigned-reqs>
> <xsl:for-each select="$all-reqs">
> <xsl:choose>
> <xsl:when test="/system/components/component/requirement/@number = ." />
That test can never be true.
If the top level element in requirements.xml is requirements, then the
path starting /system will select the empty node set.
/ at the start of an xpath means the root of the tree containing the
current node, and the current node here is an item in $all-reqs which
is a tree rooted in the node returned by the document() function.
I suspect you meant
<xsl:variable name="all-reqs" select="document('requirements.xml')/requirements//requirement/number" />
<xsl:variable name="$root" select="/"/>
<xsl:template match="/">
<un-assigned-reqs>
<xsl:for-each select="$all-reqs">
<xsl:choose>
<xsl:when test="$root/system/components/component/requirement/@number = ." />
although you dont need an xsl:choose with an empty branch it looks like
a single xpath is all you need
select="$all-reqs[not(.=$root/system/components/component/requirement/@number)]">
<requirement><xsl:value-of select="." /></requirement>
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] XPath expression confusio, Geert Josten | Thread | RE: [xsl] XPath expression confusio, Xia Li |
| RE: [xsl] Selecting the first item , Michael Kay | Date | Re: [xsl] XPath expression confusio, David Carlisle |
| Month |