我有以下 xml 示例:
<test>
<p>Some text (page 24)</p>
<p>Some text (Page 24)</p>
<p>there is some text here (page 24) and here (page 25)</p>
<p>some text (pages 24, 7, 9)</p>
</test>
我想使用一些正则表达式将所有页面文本片段包装到 page_ref 标记中,因此结果如下所示:
<test>
<p>Some text <page_ref>(page 24)</page_ref></p>
<p>Some text <page_ref>(Page 24)</page_ref></p>
<p>there is some text here <page_ref>(page 24)</page_ref> and here <page_ref>(page 25)</page_ref></p>
<p>some text <page_ref>(pages 24, 7, 9)</page_ref></p>
</test>
我的代码如下
<xsl:template match="text()">
<xsl:analyze-string select="." regex="\(([pP]age).*\)">
<xsl:matching-substring>
<page_ref><xsl:value-of select="."/></page_ref>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
但它在我的 3d p 标签上失败了,因为它产生
<p>there is some text here <page_ref>(page 24) and here (page 25)</page_ref></p>
因此,如果有人能够指出我的错误,我将是一个快乐的人。提前致谢 !