2011-06-03 72 views
0

我正在嘗試使用XSLT將xml元素插入到xml文件中。我有兩個文件,包含xpaths(例如:/ root /元素)的輸入文件,並根據輸入xpath將元素插入輸出文件,例如,如果輸入元素值爲/ root /元素,則應插入new_element成目的地,以便輸出將是在XSLT中傳遞Xpath

<root> 
    <new_element id="1">some content</new_element> 
    <element>some content</element> 
</root> 

我填充用的xpath輸入一個變量,然後使用該變量,但我正在一個錯誤消息「參數和變量不能在模式中使用)。這裏是我使用的是可變的部分:

<xsl:apply-templates select="@* | node()"/> 
</xsl:copy> 
</xsl:template> 

我很新的XSLT,所以我不知道我做錯了,或者如果我的要做的邏輯是不恰當的。

我會感謝您的幫助:)

感謝

+0

你有什麼當前樣本你可能會期待什麼結果總是會有所幫助:) – Keith 2011-06-03 14:08:05

+0

我編輯了你的帖子,使代碼示例可見,但在第二個示例中沒有看到任何變量用法。所以請確保您向我們展示所有細節,以便我們瞭解問題。 – 2011-06-03 14:42:12

+0

大家好,感謝您的回覆:) – tigris 2011-06-05 23:57:00

回答

0

在XSLT 1.0,變量不能在匹配模式使用。匹配模式是您支持<xsl:template match="...">的表達方式。在這些情況下你必須使用文字。考慮到模板在被執行之前被編譯,所以在編譯後的表達式中有一個變量可能會導致它不太好。

如果你是新來的XSLT,並在學習它的興趣,也有在網絡上一對夫婦良好的資源(開始Jeni Tennison's website,以及印刷形式。

+0

感謝Lumi的,所以你有什麼建議,如果我想通過XPath和使用它插入xml元素? – tigris 2011-06-03 15:10:51

+0

要麼將​​路徑放入您的XSLT文件中,而要單獨列出(最明智的),或者編寫一個很酷的構建系統來使用XSLT生成XSLT文件 - 畢竟它只是一個XML文檔! – 2011-06-03 16:05:58

+0

感謝Nicolas ..我無法列出XSLT中的路徑,因爲它們是動態生成的。儘管如此,我可以構建一個系統來根據輸入文件生成XSLT,但問題在於我將不得不做另一個階段..所以我想要做的是在同一階段(項目)我生成包含路徑的輸入XML,然後根據給定的路徑插入元素..如果我生成的XSLT我將無法在同一個項目中調用它,我將不得不創建另一個項目,然後在生成XSLT腳本之後運行此項目。 – tigris 2011-06-03 16:38:31