2012-06-13 17 views
0

我想使用2個名爲SOURCE和DEST的變量。 以這種方式,我的Perl腳本將使用如何使用變量在XSLT2.0中編寫查詢?

SOURCE =「Bonn」;

DEST =「Berlin」;

然後我會從我的perl腳本調用xslt2.0轉換。

<xsl:param name="SOURCE"/> 
<xsl:param name="DEST"/> 

<xsl:variable name="start" select="//S[@id=$SOURCE]/T[@id=$DEST]"/> 

<!--<xsl:variable name="start" select="//S[@id='Paris']/T[@id='London']"/> --> 

它發生,我不正確地寫入線(因爲這XSLT的敵人不返回任何行):

<xsl:variable name="start" select="//S[@id=$SOURCE]/T[@id=$DEST]"/> 

你能親切地糾正我的XSLT語法?

+0

好吧,發佈一個最小輸入文檔,你正在查詢你認爲路徑的位置是什麼?// S [@id = $ SOURCE]/T [@ id = $ DEST]'應該選擇一些內容,但是當參數設置爲「波恩」和「柏林」。然後我們可以決定你的路徑是否正確或者問題在別處。另外我很好奇,哪種XSLT 2.0處理器可以在Perl中使用? –

+0

這個查詢完美地工作:我會嘗試發佈部分輸入文件 – laurentngu

+0

@馬丁輸入文件<?XML版本= 「1.0」 編碼= 「UTF-8」?> 這是一個很好的行程 我在想這個問題來自引號'' – laurentngu

回答

2

我認爲問題是簡單地調用撒克遜的正確方法,如果您使用命令行界面,那麼我認爲您需要使用例如transform.exe -s:file.xml -xsl:sheet.xsl -o:result.xml SOURCE=Bonn DEST=Berlin

+0

非常感謝。你發現它 – laurentngu

+0

稍後來這裏的人的注意事項:這個答案可能不會外推到其他shell /命令行解釋器。從一個外殼處理器到另一個外殼處理器,引號和其他特殊字符的處理差異很大。 –