Richard Sayre wrote:
I am trying to check me XML to see if any of the descendants contain a
certian value.
<snip />
I can have unlimited Child Types in each type. When I get to a
certain type, I want to check and see if this node or any descendants
of this node has a value of 0 for the inUse node.
This is what I tried but it did not work:
<xsl:if test="descendant-or-self::inUse = 0">
Change it to the following and you should be fine (you are looking for
string, not for a number):
<xsl:if test="descendant-or-self::inUse = '0'" >
Depending on what you are after, you may want to remove the xsl:if and
change it to something like this with apply-templates on the place of
your xsl:if:
<xsl:template match="node-to-test[descendant-or-self::inUse = '0' ]">
...
</
which will leave the thinking about order and logic to the processor.
Also, you can change descendant-or-self:: to .// (yes, the dot is
supposed to be there, otherwise the search will be done from the root).
That brings me to another thing. If you all you need is a stylesheet
that outputs something when a certain child has a certain value, you may
as well do this instead:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="inUse[.='0']">FOUND<xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
The last match is to disable the default stylesheet for text nodes, the
first one matches when your criterion is met. In XSLT 2.0 you can put
this criterion in a parameter and then you have effectively created an
XML search tool (by setting the parameter on the commandline) ;)
Cheers,
-- Abel Braaksma
--~------------------------------------------------------------------
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>
--~--