-1

嗨,我有下面的 xml 代码。

    <toc-div>
                <toc-item num="1.">
                    <toc-title>Introduction</toc-title>
                    <toc-pg>2.001</toc-pg>
                </toc-item>
                <toc-item num="(a)">
                    <toc-title>Transitional arrangements</toc-title>
                    <toc-pg>2.003</toc-pg>
                </toc-item>
                <toc-item num="(b)">
                    <toc-title>Classifying by numbers</toc-title>
                    <toc-pg>2.006</toc-pg>
                </toc-item>
                <toc-item num="2.">
                    <toc-title>Incorporation</toc-title>
                    <toc-pg>2.009</toc-pg>
                </toc-item>
</toc-div>

在这里,如果 toc 项目有一个数字,我想要一个 xslt 给我输出 1,否则我希望它是 2。请让我知道该怎么做。我知道我可以使用条件,但我想知道如果节点包含数字,如何形成该语句。

谢谢

4

1 回答 1

0

像这样的东西?

<xsl:template match="toc-item">
   <xsl:variable name="num" select="number(translate(@num, '.', ''))" />
   <xsl:variable name="chapter" select="1 + ($num != $num)" />

   ....
</xsl:template>

在此 XSLT 中使用时:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="toc-item">
    <xsl:variable name="num" select="number(translate(@num, '.', ''))" />
    <!-- NaN != NaN evaluates to true(). -->
    <xsl:variable name="chapter" select="1 + ($num != $num)" />

    <xsl:value-of select="concat($chapter, '&#xA;')" />
  </xsl:template>
</xsl:stylesheet>

并在您的示例输入上运行,这将产生:

1
2
2
1
于 2013-03-04T08:37:38.133 回答