At 2010-04-05 14:01 +0200, Ben Stover wrote:
Assume I have a XML doc which might contain an optional tag with a
numeric value similar to
<ns1:aaa>345</ns1:aaa>
Now I want to check with a XSLT expression:
- if this optional <ns1:aaa> tag exists at all
You address it with a node set expression and if the result is
non-empty, then it exists.
If you are using XSLT 1 and you are at the parent of the element then:
<xsl:if test="ns1:aaa">
A more explicit way in XSLT 2 would be:
<xsl:if test="exists(ns1:aaa)">
... but the result is the same.
- if it exists then it should be checked if the value is numeric
(leading and trainling blanks should be ignored. integer and
floating numbers should both be
acceptable
If you are using XSLT 1 then:
<xsl:if test="number(ns1:aaa) = number(ns1:aaa)">
... because of the property of NaN not being equal to NaN.
A more explicit way in XSLT 2 would be:
<xsl:if test="ns1:aaa castable as xsd:float">
- If the value is numeric then 2500 (resp. 2500.00) should be added
<xsl:value-of select="ns1:aaa + 2500"/>
How can I implement this logic in XSLT?
<xsl:if test="exists(ns1:aaa)">
<xsl:if test="ns1:aaa castable as xsd:float">
<xsl:value-of select="ns1:aaa + 2500"/>
</xsl:if>
</xsl:if>
I hope this helps.
. . . . . . . . . Ken
--
XSLT/XQuery training: San Carlos, California 2010-04-26/30
Principles of XSLT for XQuery Writers: San Francisco,CA 2010-05-03
XSLT/XQuery training: Ottawa, Canada 2010-05-10/14
XSLT/XQuery/UBL/Code List training: Trondheim,Norway 2010-06-02/11
Vote for your XML training: http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--