我想獲取多個輸入文件(XML/HTML/XHTML)和相應的XSLT,以生成相應輸入文件的輸出文件。如果只有一個輸入XML文件和一個輸入XSLT文件,則可以從以下程序中成功轉換它。 E.g在給定程序中,我的輸入(X)HTML文件是temp.html,輸入XSLT是temp.xsl,它將輸出生成爲temp_copy.html。 如果我有兩個或兩個以上的輸入文件temp1.html和temp2.html以及相應的XSLT temp1.xsl和temp2.xsl,那麼最好的方法是什麼?那麼如何通過使用以下代碼生成輸出temp1_copy.html和temp2_copy.html?相應的輸入文件? 感謝你!使用Java程序用XSLT轉換多個XML/XHTML/HTML文件
我目前的Java代碼:
public class SimpleXSLT {
public static void main(String[] args) {
String inXML = "C:/tmp/temp.html";
String inXSL = "C:/tmp/temp.xsl";
String outTXT = "C:/tmp/temp_copy.html";
SimpleXSLT st = new SimpleXSLT();
try {
st.transform(inXML,inXSL,outTXT);
} catch(TransformerConfigurationException e) {
System.err.println("Invalid factory configuration");
System.err.println(e);
} catch(TransformerException e) {
System.err.println("Error during transformation");
System.err.println(e);
}
}
public void transform(String inXML,String inXSL,String outTXT)
throws TransformerConfigurationException,
TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(inXSL);
Transformer transformer = factory.newTransformer(xslStream);
transformer.setErrorListener(new MyErrorListener());
StreamSource in = new StreamSource(inXML);
StreamResult out = new StreamResult(outTXT);
transformer.transform(in,out);
System.out.println("The generated XML file is:" + outTXT);
}
}
class MyErrorListener implements ErrorListener {
public void warning(TransformerException e)
throws TransformerException {
show("Warning",e);
throw(e);
}
public void error(TransformerException e)
throws TransformerException {
show("Error",e);
throw(e);
}
public void fatalError(TransformerException e)
throws TransformerException {
show("Fatal Error",e);
throw(e);
}
private void show(String type,TransformerException e) {
System.out.println(type + ": " + e.getMessage());
if(e.getLocationAsString() != null)
System.out.println(e.getLocationAsString());
}
}
這是嚴格的XSLT 1.0問題還是XSLT 2.0解決方案也可以接受? – 2012-08-01 01:27:13
@DimitreNovatchev感謝您的回覆。那麼在我的XSLT文件聲明就像xsl:stylesheet version =「1.0」,所以我認爲它應該是XSLT 1.0,但是當我在一個文件中將它更改爲xsl:stylesheet version =「2.0」時,它沒有任何區別。我不太瞭解XSLT,因此我不確定XSLT 2.0是否可以工作,但如果可以的話,請向我提供解決方案,以便我可以嘗試。感謝您! – RahulD 2012-08-01 05:17:46
@DimitreNovatchev此外,這個java程序可以與.xml文件完美協作,但是當涉及.html文件(XHTML)時,它會變得非常緩慢,有時甚至連接都會超時。 – RahulD 2012-08-01 05:20:26