0

我有以下 xml 案例

情况1:

<tertiaryie level="1">application filing, 11.112</tertiaryie>

案例二:

<tertiaryie level="1">application filing, 1.112</tertiaryie>

当我应用下面的正则表达式时。

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="text()">
    <xsl:analyze-string select="." regex="(([Cc]hapter)\s(\d+))">
      <xsl:matching-substring>
        <a href="{concat('er:#AHK_CH_',regex-group(3))}">
          <xsl:value-of select="."/>
        </a>
      </xsl:matching-substring>
      <xsl:non-matching-substring>
        <xsl:analyze-string select="." regex="([0-9])\.([0-9]+)">
          <xsl:matching-substring>
            <a
              href="{concat('er:#AHK_CH_',format-number(number(regex-group(1)),'00'),'/P',format-number(number(regex-group(1)),'00'),'-',regex-group(2))}">
              <xsl:value-of select="."/>
            </a>
          </xsl:matching-substring>
          <xsl:non-matching-substring>
            <xsl:value-of select="."/>
          </xsl:non-matching-substring>
        </xsl:analyze-string>
      </xsl:non-matching-substring>
    </xsl:analyze-string>
  </xsl:template>

</xsl:stylesheet>

我得到的输出如下。情况1:

 application filing, 1<a href="er:#CHK_CH_01/P01-112">1.112</a>

案例2:

application filing, <a href="er:#CHK_CH_01/P01-112">1.112</a>

正则表达式适用于第二种情况,但不适用于第一种情况。对于第一种情况,数字 1 被修剪掉并出现在锚标记之前。请让我知道如何使输出如下。我需要一个模板来检查任一条件并给出输出。这里案例 2 的输出是正确的。

application filing, <a href="er:#CHK_CH_11/P11-112">11.112</a>

谢谢

4

1 回答 1

1

只需调整您的正则表达式:

<xsl:analyze-string select="." regex="([0-9]+)\.([0-9]+)">
于 2013-09-05T09:03:58.060 回答