I have two files structured like this:
File A
-------
<requirements>
<requirement>
<number />
<requirement>
<number />
And so on to an arbitrary depth
</requirement>
</requirement>
</requirements>
File B
-------
<system>
<components>
<component>
<requirement number="" />
<requirement number="" />
<requirement number="" />
</component>
</components>
</system>
There will be an arbitrary number of components, each with an arbitrary number
of requirements.
My goal is to produce a document containing all the requirement/number elements
from File A that don't have a matching requirement/@number in File B.
My unsuccessful approach is represented in this stylesheet fragment:
<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 = ."
/>
<xsl:otherwise>
<requirement><xsl:value-of select="." /></requirement>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</un-assigned-reqs>
</xsl:template>
It was my belief that the XPath expression in the test would search all the
number attribute values in the document for a value that matched the value of
the current iteration of the loop.
Instead, it seems that there are no matches, as I get one element output for
each iteration of the loop.
Can someone point out where I'm going wrong?
Thanks.
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--