XSLT 1.0循环通过子节点

时间:2015-02-05 12:07:09

标签: xml xslt

我正在努力创建一个for-each循环,它将列出许多子节点。 xml看起来像这样:

<Product>
    <Name>Name</Name>
    <Colors xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:string>String one</d4p1:string>
        <d4p1:string>String teo</d4p1:string>
        <d4p1:string>String three</d4p1:string>
        <d4p1:string>String four</d4p1:string>
    </Colors>
    <Price>329</Price>
</Product>
到目前为止,我尝试过这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:telenor="http://test" exclude-result-prefixes="test msxsl">
<xsl:template match="/">
    <xsl:for-each select="Product/Colors"/>
        <xsl:value-of select="@d4p1"/>
    </xsl:for-each>
</xsl:template>

但它没有用。基本上,我只是在寻找这样的列表:

  

String one String 2 String 3 String 4

1 个答案:

答案 0 :(得分:0)

非常简单:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<xsl:template match="/">
    <xsl:for-each select="Product/Colors/d4p1:string">
        <xsl:value-of select="."/>
        <xsl:text> </xsl:text>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>