я хотел бы преобразовать 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>
Итак, как я могу превратить это в то, что я хочу? Спасибо за любую помощь.