2013-10-23 3 views
1

XML 속성을 선택하는 방법 :XSLT - 나는 XML 파일있어

<root> 
<host> 
<address addr="192.168.0.1" addrtype="ipv4"/> 
<ports> 
<port protocol="tcp" portid="10"></port> 
<port protocol="tcp" portid="20"></port> 
</ports> 
</host> 
<host> 
<address addr="192.168.0.2" addrtype="ipv4"/> 
<ports> 
<port protocol="tcp" portid="30"></port> 
<port protocol="tcp" portid="40"></port> 
</ports> 
</host> 
<root> 

는이 같은 결과를 얻을 싶어 : I가-각각 사용하고

192.168.0.1 10,20 
192.168.0.2 30,40 

(첫번째 열의를) :

:

<xsl:for-each select="root/host"> 
<xsl:value-of select="address/@addr"/></fo:block> 
</xsl:for-each> 

그러나 두 번째 열은 내가 잘못 결과를 얻을 수 있습니다 .. 문제가

192.168.0.1 10,20,30,40 
192.168.0.2 10,20,30,40 

도와주세요 :) 당신은 모든 자식 '포트'요소를 통해 다시 반복 할 필요가

답변

1

. 다음은 작동합니다 :

<xsl:for-each select="root/host"> 
    <xsl:value-of select="address/@addr" /> 
    <xsl:text> </xsl:text> 
    <xsl:for-each select="ports/port"> 
     <xsl:value-of select="@portid" /> 
     <xsl:if test="following-sibling::*">,</xsl:if> 
     <xsl:text>&#xa;</xsl:text> 
    </xsl:for-each> 
</xsl:for-each>