我有以下xml案例
情况1:
<tertiaryie level="1">application filing, 11.112</tertiaryie>
案例2:
<tertiaryie level="1">application filing, 1.112</tertiaryie>
当我申请下面的Regex时。
<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>
由于
答案 0 :(得分:1)
只需调整你的正则表达式:
<xsl:analyze-string select="." regex="([0-9]+)\.([0-9]+)">