我有一个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>
这没有数据。有人可以帮忙吗?
答案 0 :(得分:1)
在当前的XSLT中,您将获得a:string
元素中元素a:string
的值。如果要获取当前节点的值,请使用.
将您的XSLT更改为:
<xsl:template match="a:string">
<test>
<xsl:value-of select="."/>
</test>
</xsl:template>