您好我有一个关于XSL(T)的问题。我想知道是否可以在不影响原始模板的情况下扩展模板?让我通过代码解释自己。
我有以下原始模板(original-template.xsl):
<xsl:template match="dom:Textbox">
<xsl:attribute name="id">
<xsl:value-of select="@id" />
</xsl:attribute>
<xsl:choose>
<xsl:when test="@password = 'true'">
<xsl:attribute name="type">password</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="type">text</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
现在我创建了一个扩展文件(extension.xsl)来推翻或在理想情况下扩展原始的xsl文件:
<xsl:template match="dom:Textbox">
<xsl:if test="@cssClass='placeholder-input'">
<xsl:attribute name="placeholder">Enter your email</xsl:attribute>
</xsl:if>
</xsl:template>
现在运行此操作将否决我原始模板中陈述的所有内容。我想知道是否有一种方法可以继承原始模板的所有内容并将我的占位符代码添加到原始模板中?
答案 0 :(得分:0)
您可以使用xsl:import
和xsl:apply-imports
执行此操作,例如假设您extension.xsl
使用<xsl:import href="original-template.xsl"/>
,则可以使用
<xsl:template match="dom:Textbox">
<xsl:if test="@cssClass='placeholder-input'">
<xsl:attribute name="placeholder">Enter your email</xsl:attribute>
</xsl:if>
<xsl:apply-imports/>
</xsl:template>
此外,XSLT 2.0还有xsl:next-match
。