我想转换xml,那个:
这是我的代码:
<?xml version="1.0" encoding="UTF-8"?>
<IDataXMLCoder version="1.0">
<record javaclass="xxx">
<record name="result" javaclass="yyy">
<value name="errorCode">0</value>
<value name="errorDesc">OK</value>
</record>
</record>
</IDataXMLCoder>
我想转换成类似的东西:
<IDataXMLCoder>
<record>
<result>
<errorCode>0</errorCode>
<errorDesc>OK</errorDesc>
</result>
</record>
</IDataXMLCoder>
如您所见,
name="errorCode"现在是节点的名称。这个节点的值是
0我到目前为止写的代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<!--<xsl:strip-space elements="*"/>--> <!--po usunieciu nie bedzie wciec-->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*/@*[contains('|javaclass|version|',
concat('|',name(),'|')
)
]"/>
<xsl:template match="@*">
<xsl:element name="{current()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我明白了:
<IDataXMLCoder>
<record>
<record>
<result>result</result>
<value>
<errorCode>errorCode</errorCode>0</value>
<value>
<errorDesc>errorDesc</errorDesc>OK</value>
</record>
</record>
</IDataXMLCoder>
那么,我怎么能把它变成我想要的呢?谢谢,任何帮助。
答案 0 :(得分:2)
以下是一个样本样式表,它可以实现所发布的输入样本的描述结果:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@name]">
<xsl:element name="{@name}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
如果这还不够,那么您需要更详细地解释您的要求。