2013-05-17 199 views
1

選擇從XML特定命名的元素我有一個像這樣的XML的VA可變prdxml使用XSLT

<category numberofproducts="0"> 
    <id>catering</id> 
    <url>/products/kantine</url> 
    <name>Kantine</name> 
    <category numberofproducts="0"> 
    <id>madembal</id> 
    <url>/products/mad-og-emballage</url> 
    <name>Mad og emballage</name> 
    <category numberofproducts="9"> 
     <id>stanniol</id> 
     <url>/products/stanniol</url> 
     <name>Stanniol</name> 
     <category numberofproducts="9"> 
     <id>stankd</id> 
     <url>/products/stankd</url> 
     <name>stankd</name> 
     </category> 
    </category> 
    <category numberofproducts="5"> 
     <id>termo</id> 
     <url>/products/termobakker</url> 
     <name>Termobakker</name> 
    </category> 
    </category> 
</category> 

現在,我想所有的標識在這個XML呈現給string.Tried通常for-each循環但失敗了,因爲這個XML的結構。現在,我認爲有可能是實現這一目標的明智之選,我從來沒有任何kn​​own.Can一個給我說光。

回答

1

如果你的意思是扁平的所有id,」分隔符之間「而不論其嵌套級別s,那麼這應該與工作」。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="//id"/> 
    </xsl:template> 

    <xsl:template match="id"> 
    <xsl:value-of select="concat(./text(), ',')"/> 
    </xsl:template> 

</xsl:stylesheet> 

返回:catering,madembal,stanniol,stankd,termo,

如果你需要處理的最後一個元素定界符一個更優雅的機制,看看Dimitre's answer here

更新:要結果放入一個變量:

<xsl:variable name="someVar"> 
    <xsl:apply-templates select="//id"/> 
</xsl:variable> 
Result: <xsl:value-of select="$someVar"/> 
+0

我得到正確的結果,但需要一個額外的info.How我可以藉此VALU ES在給一個變量。(所有逗號分隔) – Athul

+0

現在我得到每一個seperately印刷 – Athul