我有这个来源:
<blockquote><p> word1<lat:sup/> word2<lat:sup/> word3<lat:sup/> </p></blockquote>
期望的输出:
<blockquote><p>word1<sup>1</sup> word2<sup>2</sup> word3<sup>3</sup></p></blockquote>
我该怎么做?
当然,在真实来源中,可能会有更多<lat:sup/>
个。
<p>
中可能有多个<blockquote>
,但我需要在blockquote中计算lat:sup,忽略p。
答案 0 :(得分:2)
您可以使用xsl:number
。
以下是一个示例(为简单起见,删除了lat:
前缀)
XML输入
<blockquote>
<p> word1<sup/> word2<sup/> word3<sup/> </p>
<p> wordA<sup/> wordB<sup/> wordC<sup/> </p>
</blockquote>
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sup">
<sup>
<xsl:number from="blockquote" level="any"/>
</sup>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<blockquote>
<p> word1<sup>1</sup> word2<sup>2</sup> word3<sup>3</sup>
</p>
<p> wordA<sup>4</sup> wordB<sup>5</sup> wordC<sup>6</sup>
</p>
</blockquote>