XSLT转换以两种XML格式



这是源代码

    <data t1="a" t2="b" t3="c">
        <name ans="d">xyz</name>
    </data>

我想获得

<info name="a">
    <info name="b">
        <info name="c">
            <answer name="d">xyz</answer>
        </info>
    </info>
</info>

但是我对此有严重的问题。

以下XSL我尝试了

<xsl:template match="*/*">
   <info>
        <xsl:element name="{node-name(.)}">
           <info>
            <xsl:for-each select="*/item">
                <xsl:element name="{node-name(..)}">
                  <xsl:copy-of select="./*" />
                </xsl:element>
            </xsl:for-each>
           </info> 
        </xsl:element>
    </info>
    </xsl:template>

您的单个示例不提供规则。以下样式表将提供预期的结果,但这可能只是一个巧合:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/data">
    <info name="{@t1}">
        <info name="{@t2}">
            <info name="{@t3}">
                <xsl:apply-templates/>
            </info>
        </info>
    </info>
</xsl:template>
<xsl:template match="name">
    <answer name="{@ans}">
        <xsl:value-of select="."/>
    </answer>
</xsl:template>
</xsl:stylesheet>

相关内容

  • 没有找到相关文章

最新更新