如何在XSL中获取重复值?

时间:2016-01-12 08:02:55

标签: xml xslt

我有一个XML,例如:

<Response xmlns="www.google.com">
    <Result>
        <Errors xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">

            <a:string>1sterror</a:string>
            <a:string>another error</a:string>
        </Errors>
    </Result>
</Response>

我正在尝试如下的输出:

<?xml version="1.0" encoding="UTF-8"?>
<pagedata xmlns:aa="www.google.com"
          xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <test>1sterror</test>
   <test>another error</test>
</pagedata>

我正在制作的XSL是:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:aa="www.google.com" 
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">

<xsl:output method="xml" indent="yes" />
<xsl:template match="aa:Response">
<xsl:apply-templates select="aa:Result" />
</xsl:template>

<xsl:template match="aa:Result">
<pagedata>
<xsl:apply-templates select="aa:Errors"/>
</pagedata>
</xsl:template>

<xsl:template match="aa:Errors">
<xsl:apply-templates select="a:string"/>
</xsl:template>  

<xsl:template match="a:string">
<test>
<xsl:value-of select="a:string"/>
</test>
</xsl:template>


</xsl:stylesheet>

但我得到的输出是:

<?xml version="1.0" encoding="UTF-8"?>
<pagedata xmlns:aa="www.google.com"
          xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <test/>
   <test/>
</pagedata>

这没有数据。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在当前的XSLT中,您将获得a:string元素中元素a:string的值。如果要获取当前节点的值,请使用.

将您的XSLT更改为:

<xsl:template match="a:string">
    <test>
        <xsl:value-of select="."/>
    </test>
</xsl:template>