XSLT 2.0名称空间支持

时间:2013-02-11 10:17:46

标签: xml xslt-2.0

我想使用xslt转换以下xml。 注意:我在输入xml中使用名称spave

输入XML

<?xml version="1.0" encoding="UTF-8"?>
<Roottag xmlns="aaa">
    <Employee>
        <name>Nimal</name>
    </Employee>
    <Employee>
        <name>Kamal</name>
    </Employee>
    <Employee>
        <name>Sunil</name>
    </Employee>
</Roottag>

XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="//name">
        <xsl:element name="person">
            <xsl:value-of select="." />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

预期输出

<?xml version="1.0" encoding="UTF-8"?>

<person>Nimal</person>
<person>Kamal</person>
<person>Sunil</person>

当前输出

<?xml version="1.0" encoding="UTF-8"?>  
        Nimal   
        Kamal   
        Sunil

任何人都可以帮我解决xslt2.0转换中的这个名称空间问题吗?

1 个答案:

答案 0 :(得分:1)

使用XSLT 2.0和XSLT 2.0处理器,您可以使用

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xpath-default-namespace="aaa">

    <xsl:template match="name">
        <person>
            <xsl:value-of select="." />
        </person>
    </xsl:template>
</xsl:stylesheet>

使用XSLT 1.0处理器

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:df="aaa" exclude-result-prefixes="aaa">

    <xsl:template match="df:name">
        <person>
            <xsl:value-of select="." />
        </person>
    </xsl:template>
</xsl:stylesheet>