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を処理するための問題をさらに引き起こしています。
私は変革に関して多くの質問を見てきました。これは長い間私を悩ませています。誰かが私が間違っているところを指摘することができれば、たくさん感謝します。
また、プロセス全体で誤った規則に従っている場合も指摘してください。
ありがとう、よろしく。