我正在尝试将XML文档(实际上,我需要转换为任何xml)转换为元素列表,这些元素将值存储为元素值,并将原始节点的名称作为名为“name”的属性存储,如:
<rootNode>
<element name="first">value1</element>
<element name="try">valueX</element>
<rootNode>
是原作:
<a>
<first>value1</first>
<try>valueX</try>
</a>
答案 0 :(得分:0)
我同意这是一个非常糟糕的主意。它与大多数人想要的完全相反......将良好的XML转化为糟糕的形式。然后,如果没有您尝试复制的任何层次结构,则很简单。你想要一个像这样的结构:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="a">
<rootNode>
<xsl:apply-templates/>
</rootNode>
</xsl:template>
<xsl:template match="*">
<xsl:variable name="name" select="name()"/>
<element>
<xsl:attribute name="name">
<xsl:value-of select="$name"/>
</xsl:attribute>
<xsl:value-of select="."/>
</element>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
这会产生:
<rootNode>
<element name="first">value1</element>
<element name="try">valueX</element>
</rootNode>