我有一個關於在我正在處理的項目上重構som XSLT代碼的問題。在XSLT我現在我該如何重構這個XSLT
<pdf:sometext text="{$metadata/namespace:template
/namespace:template_collection
//namespace:option
[namespace:identificator
= $report_option_identifier]
/namespace:name}"/>
的問題是,XSLT需要擴展打更多的節點(在原著XML的新版本,以略低改變了命名空間和略有改變標籤)。
我想出了這個代碼:
<xsl:variable name="report_template_collection"
select="$metadata
/namespace:template
/namespace:template_collection
|
$metadata
/namespace2:templateV2
/namespace2:template_collectionV2" />
<xsl:variable name="current_report_option"
select="namespace:option | namespace2:optionV2" />
<xsl:variable name="incomplete_report_option_text"
select="$report_template_collection
//$current_report_option
[namespace:identificator
= $report_option_identifier]
/namespace:name"/>
<pdf:sometext text="{$incomplete_report_option_text}"/>
但是在編譯時它帶有的部份錯誤:
Unexpected token '$' in the expression. $report_template_collection// -->$<-- current_report_option[namespace:opt...
所以我的問題是:我如何重構XSLT佔新的命名空間(命名爲V2)和另一個命名空間。重要的是相同的XSLT符合XML的所有版本(包括舊版本和新版本)。
在此先感謝!
你的問題是相當無法回答的,因爲它是現在。所有這些變量的目的是什麼?您提到了不同版本的XML輸入,但不顯示任何內容。我建議您按照以下順序編輯您的問題並顯示以下內容:1個句子,解釋您的目標是什麼,出了什麼問題,帶有問題的_full_,最小XSLT樣式表,XML輸入以及您期望的XML輸出。 – 2014-08-29 09:43:31
錯誤消息告訴你,其中一個'select'屬性的值不是XPath表達式。你的問題出現在表達部分......'// current_report_option' ... - 因爲只有你知道你在那裏說什麼,只有你可以修復它。 – 2014-08-29 14:35:13