This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: testing for null string in a node
- To: <xsl-list at mulberrytech dot com>
- Subject: RE: testing for null string in a node
- From: "Christof Schneider" <Christof_Schneider at gmx dot de>
- Date: Mon, 6 Nov 2000 23:21:00 +0100
- Reply-To: xsl-list at mulberrytech dot com
You can use the string()-function to accomplish the task.
xsl:when test="string(.)">
...do something...
</xsl:when>
This relies on implicit type conversion. test="" expects a boolean value,
string() delivers a string-value. Conversion rule for string to boolean
says: a zero-length string converts to false, everything else to true. The
string function tries to convert the argument to a string. For a node-set it
is the value of the text node, for a result tree fragement (what you often
get from using a variable) the result is the sequence (concatenation) of all
(self and descendant) text nodes. Beware of white spaces.
Have a look at Michael Kay's book [page 427, 508-509]
Instead of the current node you can use a variable, or name any other
node(s).
Hope it helps,
- Christof
> -----Original Message-----
> From: owner-xsl-list@mulberrytech.com
> [mailto:owner-xsl-list@mulberrytech.com]On Behalf Of
> mxmodi@duke-energy.com
> Sent: Montag, 6. November 2000 19:43
> To: xsl-list@mulberrytech.com
> Subject: testing for null string in a node
>
>
>
> Hi,
>
> I want to be able to test if the value of a certain node is empty and
> depending on the result, perform more functions. I am having some troublwe
> understanding how to test for that. Any help is appreciated.
>
> Here is the sample XML:
>
>
> <root>
> <Names>
> <Name>
> <FN>aaa</FN>
> <LN>bbb</LN>
> <Dates>
> <Date>
> <Begin>11/11</Begin>
> <End>12/11</End>
> <Projects>
> <Project>
> <Name>proj a</Name>
> <Code>abc-123</Code>
> </Project>
> ........More <Project> Nodes
> </Projects>
> </Date>
> .....more <Date> Nodes
> </Dates>
> </Name>
> ...........more <Name> Nodes
> </Names>
> </root>
>
>
> Here is the sample XSL:
>
> <xsl:template match="/">
> ...perform some code...
> <xsl:apply-templates select="//Names/Name" >
> <xsl:sort select="FN" />
> </xsl:apply-templates>
> </xsl:template>
>
> <xsl: template match="Name">
> <xsl:choose>
> <xsl:when test="*[not(child::FN)]">
> ...do something...
> </xsl:when>
> <xsl:otherwise>
> ...do something else...
> </xsl:otherwise>
> </xsl:choose>
>
> ...continue doing rest of the stuff..
> </xsl:template>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list