簡體   English   中英

如何使用XSL從XML中的同一變量獲取不同的值

[英]How do I get different values from the same variable in XML using XSL

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文件應該檢測到值“ id”和值“ serialNr”,但我的輸出是“ id” x2。 我知道這只是邏輯上的問題,但是如何才能實際更改XSL以便給我兩個值呢? (順便說一下,在XML中有一些部分,其中變量“ string Name”使用了大約4次)我想到了用Loop重寫XML,以便將Name變量重命名為name1,name2,name3等。 ,但我不知道該怎么做。 如果您能想到Java中的任何解決方案,我都將Java用作轉換器。 如果重要的話,我的輸出格式為.CSV。

(對改進XSL的任何其他技巧也表示贊賞)

謝謝!

奇怪的是,您有2個 string標簽。

我想,您的XML應該具有以下形狀:

<message code="100" description="checkSnr">
  <string name="id">1234</string>
  <string name="serialNr">5678</string>
</message>

然后你讀768,16兩個string使用標簽name與特定值作為謂語 ,定語:

<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='id']"  />
    <xsl:text>;</xsl:text>
    <xsl:value-of select="message/string[@name='serialNr']"  />
  </xsl:for-each>
</xsl:template>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM