3

我需要输出元素的副本及其所有属性和内部子级的应用模板。主要问题是属性未知。

XML:

<elem attrA="a" attrB="b" ... attrN="n">
  <child><child>
  <child><child>
</elem>

我试图遍历所有属性,但无法正常工作。

<xsl:template match="elem">
  <xsl:element name="name(.)">
    <xsl:for-each select="@*">
      <xsl:attribute name="name()">
        <xsl:value-of select="."/>
      </xsl:attribute>
    </xsl:for-each>
    <xsl:apply-templates />
  </xsl:element>
</xsl:template>

所需输出:

<elem attrA="a" attrB="b" ...="" attrN="n">
  <processed-child></processed-child>
  <processed-child></processed-child>
</elem>

给定子模板:

<xsl:template match="child">
  <processed-child><xsl:value-of select="."/></processed-child>
</xsl:template>

编辑:

XSLT 1.0

4

2 回答 2

4

<xsl:template match="elem">
  <xsl:copy>
    <xsl:copy-of select="@*" />
    <xsl:apply-templates select="*" />
  </xsl:copy>
</xsl:template>

不行?

于 2013-06-04T11:26:34.237 回答
2

只是为了增加 Tomalak 的答案,最终的解决方案得到了一些增强,以启用围绕标签的文本渲染。(原始帖子中没有描述,但这是一个要求)

完整的解决方案:

<xsl:template match="elem">
  <xsl:copy>
    <xsl:copy-of select="@*" />
    <xsl:apply-templates select="*|text()" />
  </xsl:copy>
</xsl:template>

<xsl:template match="text()"><xsl:value-of select="."/></xsl:template>
于 2013-06-19T10:33:51.590 回答