我需要在文档中找到特定的文本值,'method'并且每个实例都用以下内容替换该文本值'method':
此“方法”值可在整个文档中多次出现。问题是我还需要保留元素中的剩余文本,除了将被替换的“方法”。
<section id="1">
<title>Methods</title>
<p>The test method blah has 6 types of methods available</p>
<p>With the exception of a specific method<p
</section>
<section id="2">
<title>Organisations</title>
<p>The organisation has a method</p>
</section>
我不确定使用fn:replace是否是最好的方法,如果我还需要使用正则表达式(我目前不熟悉的东西)。对此方法的任何建议将不胜感激。
预期输出仅替换内容元素的确切文本'方法',但保留'方法':
<section id="1">
<title>Methods</title>
<p>The test <content type="description" xlink:href="linktodescription">method</named-content> blah has 6 types of methods available</p>
</section>
<section id="2">
<title>Organisations</title>
<p>The organisation has a <content type="description" xlink:href="linktodescription">method</named-content></p>
</section>
答案 0 :(得分:0)
假设您可以使用Saxon 9作为XSLT处理器(基于http://saxonica.com/html/documentation/xsl-elements/analyze-string.html)
<xsl:template match="section/p">
<xsl:copy>
<xsl:analyze-string select="." regex="\bmethod\b" flags=";j">
<xsl:matching-substring>
<content type="description" xlink:href="linktodescription">
<xsl:value-of select="."/>
</content>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:copy>
</xsl:template>