我有以下 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>
谢谢