XSLT转换不保留缩进

时间:2014-07-23 16:18:27

标签: xml xslt jaxp

我是XSLT的新手并试图从xml中删除一些元素。这是XML的代码

<?xml version="1.0"?>
<company>
    <staff id="tomcat">
        <firstname>tomcat</firstname>
        <lastname>kingdong</lastname>
        <nickname>cat</nickname>
        <salary>900000</salary>
    </staff>
    <staff id="lvshi">
        <firstname>lvshi</firstname>
        <lastname>Laong</lastname>
        <nickname>dog</nickname>
        <salary>800000</salary>
    </staff>
</company>

这里是xsl代码

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output omit-xml-declaration="no" indent="yes"/>
    <xsl:strip-space elements="*"/>

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

    <xsl:template match="staff[@id='tomcat']" />

</xsl:stylesheet>

因此,目的是删除第一个人员元素和白色空间行。 然后我在JAXP中运行这个Java代码(那些inputXML,stylingXSL等只是一些变量。)

File datafile   = new File(inputXML);
File stylesheet = new File(stylingXSL);

DocumentBuilder parser = factory.newDocumentBuilder();
document = parser.parse(datafile);

TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = tFactory.newTransformer(stylesource);

DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(outputXML);
transformer.transform(source, result);

然后这就是我得到的

<?xml version="1.0" encoding="UTF-8"?><company>
<staff id="lvshi">
<firstname>lvshi</firstname>
<lastname>Laong</lastname>
<nickname>dog</nickname>
<salary>800000</salary>
</staff>
</company>

基本上问题是

1)根元素的起始标记现在位于声明的尾部;

2)没有按预期保留缩进。

请帮忙。

0 个答案:

没有答案