我有一个类似这样的示例xsl:
<doc>
<para>text . . .text</para>
<para>text . . .text. . . . . .text</para>
</doc>
正如您所看到的,xml 中存在一些模式,如 . . .
我需要替换点之间存在的空格为 *
。因此输出应该像这样,
<doc>
<para>text .*.*.text</para>
<para>text .*.*.text.*.*.*.*.*.text</para>
</doc>
我已经为此编写了以下XSLT:
<xsl:template match="text()">
<xsl:analyze-string select="." regex="(\.)( )(\.)">
<xsl:matching-substring>
<xsl:value-of select="replace(.,regex-group(2),'*')"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
但它会消除其他所有空格,并给出以下结果,
<doc>
<para>text .*. .text</para>
<para>text .*. .text.*. .*. .*.text</para>
</doc>
我该如何修改XSLT以获得正确的输出...
"\.( \.)+"
。 - LukStorms