[thelist] RE: [xsl] Testing for presence of node

Michael Kay michael.h.kay at ntlworld.com
Fri Jun 21 15:36:00 CDT 2002


>
> For each category element if you want to check for
> subcategory as its children, you can do :
>
> <xsl:for-each select="//category">
>
>         <xsl:if test="string-length(./*[name()=subcategory]) >0 )
>            Success
>         </xsl:if>
>
>         <xsl:if test="string-length(./*[name()=subcategory])=0 )
>            Failure
>         </xsl:if>
>
> </xsl:for-each>

1. ./x is a long-winded way of writing x
2. You meant name()='subcategory' with quotes
3. ./*[name()='subcategory'] is a long-winded way of writing
./subcategory
4. The guy wants to know if the subcategory element exists, not if it
has non-empty text content.
5. Why test the same condition twice, rather than using xsl:choose?

Try instead:

<xsl:choose>
<xsl:when test="subcategory">Success</xsl:when>
<xsl:otherwise>Failure</xsl:when>
</xsl:choose>

Michael Kay
Software AG
home: Michael.H.Kay at ntlworld.com
work: Michael.Kay at softwareag.com

>
> >
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > I have an XML file that contains the following structure:
> >
> > <category>
> >   <subcategory>
> >     <article>
> >     </article>
> >   </subcategory>
> > </category>
> >
> > In my XSLT stylesheet, I need to be able to test if the <category>
> > node I'm working with contains a <subcategory> node. What's
> the best
> > way to test for the presence of this node without actually doing
> > anything with it? I was thinking <xsl:if test="something">.
> >
> > - -joeljkp
> >
> > - ---------------------------------------
> > http://www.ballsome.com
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: PGPfreeware 7.0.3 for non-commercial use
<http://www.pgp.com>
>
> iQA/AwUBPRKA7H880CLOJa2eEQJxpwCg6XhYuz/DsUThGatqbkDa99G85XAAoL8b
> GrkEiFZTOBoCy9EHV1HxOiTA
> =ASvZ
> -----END PGP SIGNATURE-----
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list




More information about the thelist mailing list