我已经搜索了一个(简单)解决方案来解决以下问题并且没有成功(可能关键字不好?)。也许XSLT大师可以提供帮助。
获取类似
的XML代码段<inline bold="1">bold text</inline>
<inline super="1">superscript text</inline>
<inline bold="1" super="1">both: bold and superscript</inline>
XSL样式表可能包含以下模板:
<xsl:template match="inline[@bold='1']">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
<xsl:template match="inline[@super='1']">
<sup>
<xsl:apply-templates/>
</sup>
</xsl:template>
现在,实现像
这样的输出的最佳方法是什么<b>bold text</b>
<sup>superscript text</sup>
<sup><b>both: bold and superscript</b></sup>
对于上面的例子,第三行是感兴趣的位置?
如何简单地应用多个属性值及其组合?给出的示例是具有多个属性的最微不足道的形式,这些属性都导致不同的输出,而它们的所有组合也是有效的。下一步将是<inline bold="1" underline="1" super="1">
。我希望有一个解决方案不需要明确地解决所有可能的组合。
答案 0 :(得分:2)
使用XSLT 2.0,您可以使用http://www.w3.org/TR/xslt20/#element-next-match:
<xsl:template match="inline[@bold='1']">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
<xsl:template match="inline[@super='1']" priority="5">
<sup>
<xsl:next-match/>
</sup>
</xsl:template>
使用XSLT 1.0,您可以使用样式表模块并执行apply-imports。