2012-01-22 61 views

回答

1

從消息似乎很明顯,你需要傳遞一個net.sf.saxon.s9api.Qname作爲第一個參數(不只是字符串"myVar")。

而第二個參數必須構造爲net.sf.saxon.s9api.XdmValue

只是爲了確保,就是很好的方式傳遞一個參數,所以我可以拿回來用

<xsl:param ... />

在您的XSLT樣式表(主之一,並且是在xsl:importxsl:include指令引用的任何樣式表模塊),你必須有一個全球性(的xsl:stylesheet子)xsl:param具有相同的名稱用於構造字符串您作爲setParameter()的第一個參數傳遞的Qname

當執行setParameter()方法,然後將變換被調用時,相應的全局xsl:param將具有用於構造作爲第二個參數,以setParameter()傳遞的XdmValue的值。

+0

謝謝。但是我覺得這很複雜,或者與我正在嘗試做的事情沒有多大關係。這真的是將參數發送到'XSLT Stylesheet'的方式嗎? – Cybrix

+0

我不知道爲什麼你期望一個不太複雜的方式來指定和傳遞外部參數。參數名稱可以是任何QName(name和namespace-uri),參數的值可以是任何XDM類型。指定此數據的API方法不能比Saxon提供的「簡單」。你確定你知道你想做什麼嗎?如果它與'setParameter()'方法不同,那麼你必須編輯問題並詳細描述你想要做什麼。有一個簡單的方法來傳遞字符串值,這是在調用Saxon的命令行上完成的。 –

2

S9APIExamples.java

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()); 
} 
+0

清除,仍然有幫助。謝謝。 – Cheeso

相關問題