我有一个 xml 文档和一个样式表,用于将文档转换为另一个有用的 xml。作为参考,xml 文档有点像这样:
<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
<element4>..some more levels of data</element4>
</root>
样式表看起来有点像这样:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="errorResponse.xsl"/>
<xsl:template match="root/element4">
<xsl:element name="myRoot">
<xsl:element name="myElement">
<xsl:apply-templates select="./someElement/someOtherElement"/>
</xsl:element>
</xsl:element>
</xsl:template>
我得到的输出 xml 字符串是这样的:
<?xml version="1.0" encoding="ISO-8859-1"?>
value1
value2
value3
<myRoot><myelement> some data </myElemrnt></myroot>
我用于转换的代码片段是这样的:
InputStream styleSheet = new FileUtil().getFileStream("xsltFileName");
StreamSource xslStream = new StreamSource(styleSheet);
DOMSource in = new DOMSource(inputXMLDoc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
TransformerFactory transFact = TransformerFactory.newInstance();
transFact.setURIResolver(new XsltURIResolver());
Transformer trans = transFact.newTransformer(xslStream);
trans.transform(in, new StreamResult(baos));
System.out.println(baos.toString()); // displays the above output
但是输出格式不理想。我不想要 value1、value2、value3。这也为生成的新 XML 进一步处理带来了问题。
我已经看到很多关于转换的问题。这困扰了我很长时间。如果有人能指出我哪里出错了,将不胜感激。
还要指出我在整个过程中是否遵循了任何不正确的约定。
谢谢并恭祝安康。