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 |