問題快速概述:Iam使用xslt 1.0轉換xml,其中xml是具有url的節點。與xsl 1.0我可以得到這些節點值,當我得到這些值我需要使用它們從xslt加載另一個xml文件,它的工作原理如果我手動使用這些節點值與文檔()函數,但我需要自動執行它。使用document()函數在xslt 1.0中加載外部xml,但將文檔的url作爲變量傳遞
在XSLT加載外部XML是相當直接向前:
<xsl:copy-of select="document('URL_OF_XML')/node1/node2"/>
和它的作品,因爲它應該。
但如果我的外部XML的URL被存儲在一個變量,如:
<xsl:variable name="MY_VARIABLE">
<xsl:value-of select="some_node_containing_url"/>
</xsl:variable>
<xsl:copy-of select="document('HOW_TO_USE_VARIBALE_VALUE_HERE') />
我曾嘗試:
<xsl:copy-of select="document($MY_VARIABLE)" /> -> works after see UPDATE 2 below
<xsl:copy-of select="document('$MY_VARIABLE')" /> nothing happend
<xsl:copy-of select="document({$MY_VARIABLE})" /> nothing happend, ofc {} are for attributes
<xsl:copy-of select="document('<xsl:value-of select="MY_VARIABLE"/>')" /> we cant use "<" ">" in document function
也許我走錯了路,和任何形式的幫助將不勝感激,TY提前
更新1個-Works: 得到它的工作使用CONCAT並添加一個空字符串,以我的變量,如:
<xsl:copy-of select="document(concat('',$MY_VARIABLE))"/>
UPDATE 2 -works: 正在關注@G。肯·霍爾曼建議我redecalared我的變量來自:
<xsl:variable name="MY_VARIABLE">
<xsl:value-of select="some_node_containing_url"/>
</xsl:variable>
到:
<xsl:variable name="MY_VARIABLE" select="some_node" />
,只是叫我複製的:
<xsl:copy-of select="document($MY_VARIABLE)"/>
和所有的作品。感謝您的幫助和建議! 結論:唯一的問題是我的變量聲明,現在document()函數接受所有對$ MY_VARIABLE的調用,不需要任何concat,但是也適用,並且string($ MY_VARIABLE)在重新聲明之後起作用。感謝大家爲他們的時間提供幫助!
我想到的第一個工作,但請給這一個嘗試:'文件(字符串($ MY_VARIABLE))'。 – JLRishe
Ty爲建議,在我重新聲明瞭我的變量後,所有東西都可以使用,也可以使用您的解決方案。 ty再次 – user2732475