具体的な詳細に入る前に、以前に Oracle のparser.v2
XSLT ライブラリでこれを試したところ、同じ問題に遭遇しました (私の最初の質問を参照してください)。ただし、C# を使用すると問題なく動作します。
// from the example I see everywhere on the internet
SAXTransformerFactory stf = (SAXTransformerFactory)TransformerFactory.newInstance();
Templates t_cctagstrip = stf.newTemplates(new StreamSource(new FileInputStream("C:\\path\\to\\first.xsl")));
Templates t_cctable = stf.newTemplates(new StreamSource(new FileInputStream("C:\\path\\to\\second.xsl")));
TransformerHandler th1 = stf.newTransformerHandler(t_cctagstrip);
TransformerHandler th2 = stf.newTransformerHandler(t_cctable);
// transform 1 pipes into transform 2
th1.setResult(new SAXResult(th2));
// transform 2 pipes to System.out
th2.setResult(new StreamResult(System.out));
Transformer t = stf.newTransformer();
t.transform(new StreamSource(new FileInputStream("C:\\path\\to\\source.xml")), new SAXResult(th1));
おそらく問題は、最初の変換からの出力がルートレベルのテキストを含むフラグメントであるという事実にあると思いますか?
text at root level
<tag> ... tags that need extra processing ... </tag>
more text at root level
C# が変換を処理する方法に違いはありますか? 失敗したり、私が知ることができる警告を表示したりしていません。何も変わっていないだけです。