2017-05-05 179 views
0

我使用XSLT生成具有相同名稱的多個節點,XSLT

輸入就像下面

<data> 
    <details> 
     <DATA> 
      <name>nameValue</name> 
     </DATA> 
     <DATA> 
      <name>nameValue1</name> 
     </DATA> 
    <details> 
<data> 

XSLT是

<xsl:template match="details"> 
    <xsl:copy> 
     <info> 
      <person_name> 
       <xsl:value-of select="DATA/name"/> 
      </person_name> 
     </info> 
    </xsl:copy> 
</xsl:template> 

輸出

<info> 
    <person_name>nameValue</person_name> 
</info> 

預期產量如下面

<info> 
    <person_name>nameValue</person_name> 
</info> 
<info> 
    <person_name>nameValue1</person_name> 
</info> 

回答

2

您的XML格式不正確,因爲它在結束標記時應該有開始標記。不過,假設它看起來像這樣...

<data> 
    <details> 
     <DATA> 
      <name>nameValue</name> 
     </DATA> 
     <DATA> 
      <name>nameValue1</name> 
     </DATA> 
    </details> 
</data> 

...你需要做的是使用xsl:for-each選擇每個孩子DATA元素

<xsl:template match="details"> 
    <xsl:copy> 
     <xsl:for-each select="DATA"> 
      <info> 
       <person_name> 
        <xsl:value-of select="name"/> 
       </person_name> 
      </info> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 
+0

我更新的問題,如數據是根元素,然後細節然後數據 – hrishi

+0

通過使用這個XSLT我得到空白的細節節點。我用xsl:for-each select =「details」 – hrishi

+0

我已經修改了我的答案以處理您的新XML結構。 –

相關問題