有人能告訴我下面的XSLT轉換有什麼問題嗎?我已將其剝離到最低限度。XSLT參數未被替換
基本上,我想有一個參數「標題」替換,但我不能讓它運行。轉換隻是忽略參數。我用一些感嘆號強調了相關的部分。
任何意見,不勝感激。
public class Test {
private static String xslt =
"<?xml version=\"1.0\"?>\n" +
"<xsl:stylesheet\n" +
" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n" +
" version=\"1.0\">\n" +
" <xsl:param name=\"title\" />\n" +
" <xsl:template match=\"/Foo\">\n" +
" <html><head><title>{$title}</title></head></html>\n" + // !!!!!!!!!!!
" </xsl:template>\n" +
"</xsl:stylesheet>\n";
public static void main(String[] args) {
try {
final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
final DocumentBuilder db = dbf.newDocumentBuilder();
final Document document = db.newDocument();
document.appendChild(document.createElement("Foo"));
final StringWriter resultWriter = new StringWriter();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(new StringReader(xslt)));
// !!!!!!!!!!!!!!!!!!
transformer.setParameter("title", "This is a title");
// !!!!!!!!!!!!!!!!!!
transformer.transform(new DOMSource(document), new StreamResult(resultWriter));
System.out.println(resultWriter.toString());
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
我使用的是沒有任何工廠特定系統屬性集的Java 6。
預先感謝您!
NB:的 的工作原理,但我想使用較短的{ $ title}語法來使用這些變量,例如在內聯CSS定義中。 –
digitalbreed
2010-05-10 15:49:52
好問題(+1)。查看我的答案以獲得解釋和完整解決方案。 :) – 2010-05-10 16:16:29