从其他模板继承变量



我正在尝试将变量从以前的模板继承到当前模板。

这是我的xsl,想知道是否有问题:

<xsl:template match="child1">
    <xsl:variable name="props-value">
        <xsl:value-of select="VALUE1"/>
    </xsl:variable>  
    <xsl:apply-templates select="attribute[matches(.,'=@')]">
        <xsl:with-param name="props-value" select="$props-value" /> 
    </xsl:apply-templates>
</xsl:template>  
<xsl:template match="attribute[matches(.,'=@')]">
<xsl:param name="props-value"/>
<xsl:copy>  
<xsl:apply-templates select="@*"/>
    <xsl:if test="$props_value = 'VALUE1'">
        Value is true
    </xsl:if>
</xsl:copy>
</xsl:template>

预期输出:值为 true。

XSLT 的两个问题:

  1. 在第一个模板的变量中,您已选择"VALUE1"作为值。这匹配<VALUE1>元素。我相信你想选择" 'VALUE1' "(值为"VALUE1"的字符串)
  2. 在第二个模板的测试中,你编写了带有下划线的$props_value,而参数是用连字符props-value调用的。

下面是 XSLT 的更正版本:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  <xsl:template match="child1">
    <xsl:variable name="props-value">
      <xsl:value-of select=" 'VALUE1' "/>
    </xsl:variable>
    <xsl:apply-templates select="attribute">
      <xsl:with-param name="props-value" select="$props-value" />
    </xsl:apply-templates>
  </xsl:template>
  <xsl:template match="attribute">
    <xsl:param name="props-value"/>
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:if test="$props-value = 'VALUE1'">
        Value is true
      </xsl:if>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

应用于以下输入 XML 时:

<child1>
  <attribute/>
</child1>

它生成以下输出 XML:

<attribute>
            Value is true
          </attribute>

相关内容

  • 没有找到相关文章

最新更新