XSL - 继承所有对象并对其进行扩展

时间:2016-07-01 09:30:39

标签: xml xslt

您好我有一个关于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>

现在运行此操作将否决我原始模板中陈述的所有内容。我想知道是否有一种方法可以继承原始模板的所有内容并将我的占位符代码添加到原始模板中?

1 个答案:

答案 0 :(得分:0)

您可以使用xsl:importxsl: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