我有以下XML
<message code="100" description="checkSnr">
<string name="id" />
<string name="serialNr" />
</message>
现在我基本上想重命名
<string name="serialNr" />
到
<string name1="serialNr" />
我读了关于这个主题的所有其他问题,但没有一个对我有用 这背后的想法很简单:单个字符串应该彼此不同。例如:
<xsl:value-of select="message/string/@name" />
将是&#34; id&#34;。
<xsl:value-of select="message/string/@name1" />
将是&#34; serialNr&#34;。
我希望它们列在CSV中,例如&#34; id; serialNr&#34;我没有重命名属性的实际输出是&#34; id; id&#34;。如果您有任何其他想法如何解决此问题,您的解决方案也会受到赞赏!
提前谢谢。
答案 0 :(得分:0)
这样的事情应该有效:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="string/@name">
<xsl:attribute name="name1">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
如果@TimC已经正确猜到了你的真实需求,那么你想要
<xsl:template match="message">
<xsl:apply-templates select="string"/>
</xsl:template>
<xsl:template match="string">
<string>
<xsl:attribute name="name{position()}">
<xsl:value-of select="@name"/>
</xsl:attribute>
</string>
</xsl:template>