在我进入具体细节之前,我先用Oracle的parser.v2
XSLT库尝试了这一点,并遇到同样的问题(请参阅my first question)。但是,当我使用C#时,它工作正常。SAXTransform链中的第二个XSLT似乎没有做任何事情
// 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#如何处理转换有什么不同吗?这不是失败或给我任何警告,我可以告诉。这只是没有改变任何东西。
我找不到日志消息。它似乎没有失败 - 只是没有改变XML。但是,你的失败原因是正确的,所以我将其标记为答案。 – climbage 2012-09-04 22:18:35