XSLT从ANT转换到使用结果文档创建多个文档的问题



我想转换并拆分XML文档。因此,我使用"结果文档",并且有效。但是,当我尝试使用ANT启动XSLT时,我只需使用XML声明就能获得一个输出XML文档。

source-xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <row>
       <name>name1</name>
       <title>bab</title>
    </row>
    <row>
        <name>name2</name>
        <title>bab</title>
    </row>
</root>

蚂蚁构建示例:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="Split">
        <target name="Transf">     
            <xslt 
                in="${basedir}source-xmlOutput.xml"
                style="${basedir}xslTransf.xsl"
                destdir="${basedir}xsloutput" 
                processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison"
                extension=".xml"
                force="yes">
            </xslt>
        </target> 
</project>

XSLT部分

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
        <xsl:output  
            method="xml" 
            encoding="UTF-8" 
            indent="yes"/>  
        <xsl:template match="/">
            <xsl:for-each select="root/row[name='name1'] | root/row[name='name2']">      
                <xsl:variable name="filename" select="concat('output/',name,'.xml')" />
                <xsl:result-document href="{$filename}" method="xml" encoding="iso-8859-1">     
                    <xsl:for-each select="/">
                        <xsl:element name="topic">  
                            <xsl:value-of select="."/>
                        </xsl:element>
                    </xsl:for-each>
                </xsl:result-document>
            </xsl:for-each>
        </xsl:template>
</xsl:stylesheet>

怎么了?还是结果文档有替代方案?

预先感谢

我建议您首先强迫使用撒克逊人,添加

<factory name="net.sf.saxon.TransformerFactoryImpl"/>

相关内容

  • 没有找到相关文章

最新更新