在我進入具體細節之前,我先用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