如何使用XSL从XML中的同一变量中获取不同的值

时间:2017-03-31 10:32:03

标签: java xml xslt

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的提示都表示赞赏)

谢谢!

1 个答案:

答案 0 :(得分:0)

很奇怪,你有2个 nullptr标签。

我想,您的XML应该具有以下形状:

string

然后,您应使用<message code="100" description="checkSnr"> <string name="id">1234</string> <string name="serialNr">5678</string> </message> 属性读取两个string标记,并将特定值作为谓词

name