我有这样的 XSLT 1.0:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
只是,有很多很多模板与第一个类似。我想在这些模板中的每一个中发出一个特定的属性,但我想做出最小侵入性的改变来实现它。这是我尝试的第一件事:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="@class">
<xsl:attribute name="class">
<xsl:value-of select="@class"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
但这没有用。我试过这个:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p>
<xsl:attribute name="class">
<xsl:value-of select="@class"/>
</xsl:attribute>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
但是要在每个模板中实现这一点,需要大量的代码重复。这是我能做的最好的事情,还是有更合适的方法来完成这项工作?