我使用Saxon 9 HE
和NetBeans 7.0.1
,我得到以下錯誤,當我嘗試參數發送給我的樣式表:如何在Java下使用Saxon將參數傳遞給我的xslt樣式表?
只是爲了確保,就是很好的方式發送參數,以便我可以拿回來
<xsl:param ... />
?
如果是這樣,我該如何使用它?
謝謝!
我使用Saxon 9 HE
和NetBeans 7.0.1
,我得到以下錯誤,當我嘗試參數發送給我的樣式表:如何在Java下使用Saxon將參數傳遞給我的xslt樣式表?
只是爲了確保,就是很好的方式發送參數,以便我可以拿回來
<xsl:param ... />
?
如果是這樣,我該如何使用它?
謝謝!
從消息似乎很明顯,你需要傳遞一個net.sf.saxon.s9api.Qname
作爲第一個參數(不只是字符串"myVar"
)。
而第二個參數必須構造爲net.sf.saxon.s9api.XdmValue
。
只是爲了確保,就是很好的方式傳遞一個參數,所以我可以拿回來用
<xsl:param ... />
?
在您的XSLT樣式表(主之一,並且是在xsl:import
或xsl:include
指令引用的任何樣式表模塊),你必須有一個全球性(的xsl:stylesheet
子)xsl:param
具有相同的名稱用於構造字符串您作爲setParameter()
的第一個參數傳遞的Qname
。
當執行setParameter()
方法,然後將變換被調用時,相應的全局xsl:param
將具有用於構造作爲第二個參數,以setParameter()
傳遞的XdmValue
的值。
String[] fruit = {"apple", "banana", "cherry"};
QName paramName = new QName("in");
for (String s: fruit) {
StringWriter sw = new StringWriter();
out.setOutputWriter(sw);
t.setParameter(paramName, new XdmAtomicValue(s));
t.setDestination(out);
t.transform();
System.out.println(s + ": " + sw.toString());
}
清除,仍然有幫助。謝謝。 – Cheeso
謝謝。但是我覺得這很複雜,或者與我正在嘗試做的事情沒有多大關係。這真的是將參數發送到'XSLT Stylesheet'的方式嗎? – Cybrix
我不知道爲什麼你期望一個不太複雜的方式來指定和傳遞外部參數。參數名稱可以是任何QName(name和namespace-uri),參數的值可以是任何XDM類型。指定此數據的API方法不能比Saxon提供的「簡單」。你確定你知道你想做什麼嗎?如果它與'setParameter()'方法不同,那麼你必須編輯問題並詳細描述你想要做什麼。有一個簡單的方法來傳遞字符串值,這是在調用Saxon的命令行上完成的。 –