转换由文档函数调用的XML

时间:2014-03-05 19:44:12

标签: xslt-2.0

我正在使用document()调用XML。我需要转换导入的XML。这可能吗?

<xsl:copy-of select="document('C:\my.xml')/*"/> 
<xsl:apply-templates/>

谢谢!

2 个答案:

答案 0 :(得分:0)

使用<xsl:apply-templates select="document('file:///c:/my.xml')/*"/>,您只需要为文件中的节点添加模板。

答案 1 :(得分:0)

例如, my.xml 在下面给出

<?xml version="1.0" standalone="no"?>
<root>
    <a>XXX</a>
    <b>YYY</b>
</root>

,下面给出了当前的xml:

<?xml version="1.0" encoding="UTF-8"?>
<root_test>
    <test1>123</test1>
    <test2>456</test2>
</root_test>

应用以下样式表时:

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

    <xsl:template match="root_test">
        <xsl:copy>
            <xsl:apply-templates/>
            <xsl:apply-templates select="document('my.xml')/*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="a[document('my.xml')]">
        <success><xsl:apply-templates/></success>
    </xsl:template>

</xsl:stylesheet>

输出

<?xml version="1.0" encoding="utf-8"?>
<root_test>
    123
    456

    <success>XXX</success>
    YYY
</root_test>

请注意已应用 my.xml 中节点a的模板。