2014-03-03 60 views
0

我正在寫我的第一個配置文件,並想知道是否有一種方法可以設置「phonenum = 123456789」一次,然後在我的xml文件的其他地方使用「phonenum」而不是「123456789」。有沒有辦法在xml中設置一個變量?

例如:

<parameter key="phonenum" value ="123456789" /> 
<parameter key="urls" value = "/phoneNumbers/123456789/.../,/phoneNumbers/123456789/.../.../.../,/phoneNumbers/123456789/.../.../.../" /> 

現在,在「網址」的價值關鍵我想用「PHONENUM」而不是實際的數量。這樣萬一有人需要改變它,他們只能在一個地方(其定義的地方)而不是在每個地址中改變它。

任何幫助,將不勝感激! 謝謝!

+0

XML僅僅是結構化數據。沒有「變量」的概念。每個標籤的含義取決於你給它的含義。你可以有一個把參數當作變量的程序。 – helderdarocha

+0

那麼你會怎麼建議這樣做的最好方法呢? – user3376961

+2

與你所要求的最接近的東西 - 所有基於XML的語言的通用解決方案 - 是[XML Parsed Entity Reference](http://www.w3.org/TR/REC-xml/#仲參考文獻)。這需要使用DTD。 (通常)更實際的答案是將這種功能設計爲您正在使用的特定的基於XML的語言,並要求處理該語言的程序適當地處理它。 – keshlam

回答

0

正如@keshlam指出的那樣,「內置」XML方法是使用實​​體引用。在你的DTD,你可以定義

<!ENTITY phonenum ....> 

,然後在你的文檔的身體,你可以將此稱爲&phonenum;。電話號碼的實際定義可以在DTD內聯,也可以在DTD中引用的單獨文件中。

很多人使用這種機制,但它不是很靈活。有幾個缺點:

  • 設置的電話號碼是指修改文件存儲文件(或使用一些相當複雜的黑客重定向你的應用程序中的引用)的每個操作上的文件

  • (例如XSLT轉換)將擴展實體引用,將其替換爲實際的電話號碼。但有時您可能希望將其留作實體參考,例如如果您只想更改文檔中的樣板文本。

另一種方法是用「填充空白」XSLT樣式表替換您的XML文檔。樣式表可以有一個參數

<xsl:param name="phoneNumber" select="'123456789'"/> 

,然後你可以寫URL作爲

<parameter key="urls" value = "/phoneNumbers/{$phoneNumber}/.../,/phoneNumbers/{$phoneNumber}/.../.../.../,/phoneNumbers/{$phoneNumber}/.../.../.../" /> 
相關問題