2012-10-30 20 views
0

我正在執行一些xslt轉換的java應用程序。 我想使用java提供的參數將節點匹配到xslt文檔中。 這是做這樣的事情的正確方法:在應用xslt轉換時使用java提供的參數到xpath函數中

<xsl:template match="//m:properties/*[contains($pattern,name())]"> 

,因爲當我啓動我的應用程序,它聲稱它不能夠編譯樣式表,因爲模式沒有確定,但我使用的setParameter方法設置它我能夠使用另一個參數,但是在不同的上下文中以相同的方式定義。 在此先感謝 費爾

+0

對不起,介於...和...之間有代碼摘錄: > – filmac

+0

什麼版本XSLT(1.0或2.0)? 1.0中的匹配表達式不允許使用變量引用。 –

+0

恐怕1.0,有沒有解決方法? – filmac

回答

1

你在你的樣式表需要一個

<xsl:param name="pattern" /> 

申報參數,在setParameter呼叫不是對自己足夠。然而,還有一個問題是,根據XSLT 1.0規範,匹配表達式不允許包含像$pattern這樣的變量/參數引用。無論如何,一些處理器確實允許它們(至少包括一些版本的Xalan),但是如果它不起作用,那麼你需要改變匹配邏輯,例如,通過定義模板來匹配//m:properties/*,但只爲那些符合您的模式的元素調用apply-templates

+0

Thaks Ian,根據你的建議聲明參數,它的工作:) – filmac

+0

@filmac好的,但要小心,如果你依靠的事實,默認處理器違反規範 - 「TransformerFactory」是可插拔的,如果有人運行你的應用程序在類路徑上使用不同(更嚴格)的處理器時,它可能無法編譯樣式表... –

相關問題