【问题标题】:XSLT conversion in two XML formatXSLT 转换成两种 XML 格式
【发布时间】:2017-04-11 23:24:34
【问题描述】:

这是源代码

    <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>

【问题讨论】:

    标签: xml xslt xsd xslt-1.0


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 那行不通。我尝试过类似的方法......一旦我在 / 之后使用
    • @gourabalam 你可以在这里看到它的工作原理:xsltransform.net/pPJ8LVp
    • 哇...我不知道问题出在哪里...需要检查我的java。非常感谢您的反馈
    猜你喜欢
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多