Re: [xsl] How to check if a value is numeric and add 2500 to it?

Subject: Re: [xsl] How to check if a value is numeric and add 2500 to it?
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 05 Apr 2010 08:06:19 -0400
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@xxxxxxxxxxxxxxxxxxxx Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread