在我进入具体细节之前,我之前使用 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# 处理转换的方式有什么不同吗?它没有失败或给我任何我可以告诉的警告。它只是没有改变任何东西。