2015-08-31 2 views
0

я пытаюсь преобразовать XML в текстовый формат с помощью XSL я получил выход, но некоторые доно отрегулировать значениеXSL с использованием XML в текстовом формате

XML:

<xx> 
    <yy id="1"> 
     <aa value="1"/> 
    </yy> 
    <yy id="2"> 
     <aa value="1"/> 
    </yy> 
    <yy id="3"> 
     <aa value="11"/> 
    </yy> 
    </xx> 

XSL:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 

     <xsl:text>Id</xsl:text><xsl:text>  </xsl:text>Number 

    <xsl:for-each select="xx/yy"> 
     <xsl:apply-templates select="@id"/><xsl:text>&#10;</xsl:text> 
    </xsl:for-each> 


    <xsl:for-each select="xx/yy/aa"> 
     <xsl:apply-templates select="@value"/><xsl:text>&#10;</xsl:text> 
    </xsl:for-each> 

</xsl:template> 

</xsl:stylesheet> 

из-пут:

id  number 

1 
2 
3 
1 1 11 

, но desried из являются

id  number 

1  1 
2  1 
3  11 

новичок в XSLT, как достичь этого формата

ответ

0

Для того, чтобы достичь желаемого выхода, вы должны удалить вторую for-each петлю и перемещать вывод значения из него в первую петлю.

Таким образом, ваш цикл должен выглядеть следующим образом:

<xsl:for-each select="xx/yy"> 
    <xsl:apply-templates select="@id"/> 
    <xsl:text> </xsl:text> 
    <xsl:apply-templates select="aa/@value"/> 
    <xsl:text>&#10;</xsl:text> 
</xsl:for-each> 

Примечание Я изменил select во втором выходе к aa/@value, чтобы получить значение дочернего узла aa.

+0

благодарит за помощь – kumar