ノード値が数値であるかどうかは、次のように簡単に確認できます。
<xsl:if test="string(number(myNode)) != 'NaN'">
<!-- myNode is numeric -->
</xsl:if>
しかし、myNode に分数またはその他の有効な数値式が含まれている場合はどうなるでしょうか。それを見つける最善の方法は何ですか?
XML の例:
<data id="1">34</data>
<data id="2">52.3</data>
<data id="3">5/9</data>
<data id="4">10*20</data>
<data id="5">foo</data>
XSL の例:
<xsl:for-each select="//data">
<xsl:if test="string(number(.)) != 'NaN'">
<isNumeric><xsl:value-of select="@id"/></isNumeric>
</xsl:if>
</xsl:if>
出力を生成します:
<isNumeric>1</isNumeric>
<isNumeric>2</isNumeric>
しかし、xpath 式 (または xsl コード) を記述して次の出力を生成する最も簡単な方法は何ですか?
<isNumeric>1</isNumeric>
<isNumeric>2</isNumeric>
<isNumeric>3</isNumeric>
<isNumeric>4</isNumeric>
...データ ID 3 と 4 も有効な数式であるため。
これは使用されるスキーマによって制御されるため、ノード値にスペースが含まれていないと想定しても問題ありません。