如何使用XSL转换器仅转换选定的XML元素

时间:2014-03-14 10:13:54

标签: xml xslt namespaces transform

我正在使用带有自定义命名空间的XML。我想编写XSTL来将此输入XML转换为输出XML,方法是在命名空间下转换所选元素,其他元素在输出XML中保持相同

实施例

<xml version="1.0">
<a dmlns:abc="http://abc.en.com/abc">
    <abc:A>
        <summary>Books</summary>
    </abc:A>
</a>

我想将此XML转换为

<xml version="1.0">
<a>
    <sample>
        <summary>Book</summary>
    </sample>
</a>

如何为此转换编写XSTL?

1 个答案:

答案 0 :(得分:1)

考虑以下输入XML:

<?xml version="1.0" encoding="UTF-8"?>
<a xmlns:abc="http://abc.en.com/abc">
    <abc:A>
        <summary>Books</summary>
    </abc:A>
    <abc:B>just another element</abc:B>
</a>

应用此样式表时:

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

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="abc:A">
        <sample>
            <xsl:apply-templates/>
        </sample>
    </xsl:template>

</xsl:stylesheet>

输出是:

<a xmlns:abc="http://abc.en.com/abc">

   <sample>

      <summary>Books</summary>

   </sample>

   <abc:B>just another element</abc:B>

</a>