XML:
<message code="100" description="checkSnr">
<string name="id"/>
<string name="serialNr"/>
</message>
XSL:
<xsl:template match="/">
<xsl:for-each select="machine/events">
<xsl:text>;</xsl:text>
<xsl:value-of select="message/@code"/>
<xsl:text>;</xsl:text>
<xsl:value-of select="message/string/@name" />
<xsl:text>;</xsl:text>
<xsl:value-of select="message/string/@name" />
</xsl:for-each>
</xsl:template>
所以这是我的问题。我的XSL-File应该检测值“id”和值“serialNr”,但我的输出是“id”x2。我知道它只是逻辑但我怎么能真正改变我的XSL所以它给了我两个值? (顺便说一下,在XML中有部分,其中变量“string Name”被使用了4次)我想用Loop重写XML,以便Name变量重命名为name1,name2,name3等等,但我无法弄清楚如何做到这一点。如果您能想到Java中的任何解决方案,我会使用Java作为转换器。 如果重要的话,我的输出格式是.CSV。
(其他任何有关改进XSL的提示都表示赞赏)
谢谢!
答案 0 :(得分:0)
很奇怪,你有2个空 nullptr
标签。
我想,您的XML应该具有以下形状:
string
然后,您应使用<message code="100" description="checkSnr">
<string name="id">1234</string>
<string name="serialNr">5678</string>
</message>
属性读取两个string
标记,并将特定值作为谓词:
name