2016-09-27 50 views
1

輸入XML:無法遍歷兩個子節點同時

enter image description here

需要的輸出格式:

enter image description here

使用的for-each我們所有的子標籤遍歷在「標題」或「對象」下;但如何遍歷這兩個標籤和選擇值並將它們組合如上所示(只是一個奇怪的例子:))。通過使用xsl轉換。任何形式的幫助將不勝感激......

+0

你的意思是在全部4行重複'entry1',還是應該是'entry1,... 2,... 3,... 4'?另外,非常重要的是,不要發佈文字圖像。發佈文本本身,以便可以輕鬆複製。張貼文字圖像會讓別人幫你更難。 –

回答

1

輸入請郵寄僅文本更易於複製

<payload> 
    <headers> 
     <header> 
      <name>entry1</name> 
     </header> 
     <header> 
      <name>entry2</name> 
     </header> 
     <header> 
      <name>entry3</name> 
     </header> 
     <header> 
      <name>entry4</name> 
     </header> 
    </headers> 
    <objects> 
     <row> 
      <value>1231</value> 
     </row> 
     <row> 
      <value>342</value> 
     </row> 
     <row> 
      <value>98789</value> 
     </row> 
     <row> 
      <value>6576</value> 
     </row> 
    </objects> 
</payload> 

XSLT:(有很多的解決方案)

<?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" indent="yes"/> 

    <xsl:template match="/"> 
     <xsl:element name="objects"> 
      <xsl:for-each select="payload/objects/row"> 
       <xsl:variable name="i" select="position()"/> 
       <entry name="{/payload/headers/header[$i]/name}" value="{value}"></entry> 
      </xsl:for-each>    
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

結果

<objects> 
    <entry name="entry1" value="1231"></entry> 
    <entry name="entry2" value="342"></entry> 
    <entry name="entry3" value="98789"></entry> 
    <entry name="entry4" value="6576"></entry> 
</objects>