将所有模板应用于全局变量而不是源



我使用全局变量从源XML捕获一组节点。对于源 XML 中的每个节点,我需要检查该节点是否存在于变量中。这可能吗?

另一种选择是将所有模板应用于全局变量而不是源 XML。但我也不知道这是否可能。

给出以下答案。如果我尝试将模板应用于全局变量,我会得到以下代码,但它不起作用。如何将变量传递给其余模板,并且仍然具有适当的匹配项?

<xsl:variable name="transformation_result">   
  <ABC>
    <xsl:copy-of select="/ABC/Data"/>
  </ADT>
</xsl:variable>
  <xsl:template match="/">
    <xsl:apply-templates select="$transformation_result"/>
  </xsl:template>
  <xsl:template match="node()">
    <xsl:copy>
      <xsl:apply-templates select="node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template name="remove_whitespace" match="text()">
    <xsl:value-of select="normalize-space()"/>
  </xsl:template>

如果您使用

<xsl:template match="/">
  <xsl:apply-templates select="exsl:node-set($var)/node()" mode="m2"/>
</xsl:template>

<xsl:template match="@* | node()" mode="m2">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()" mode="m2"/>
  </xsl:copy>
</xsl:template>
<xsl:template name="remove_whitespace" match="text()" mode="m2">
  <xsl:value-of select="normalize-space()"/>
</xsl:template>

如果样式表中的命名空间exsl需要声明为 xmlns:exsl="http://exslt.org/common",则可以在第二步中处理变量的结果并删除空格。

相关内容

  • 没有找到相关文章

最新更新