我想转换并拆分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"/>