我是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)没有按预期保留缩进。
请帮忙。