2017-05-05 132 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结构。 –

相关问题