有没有办法在xml中设置变量?

时间:2014-03-03 23:47:53

标签: xml variables

我正在编写我的第一个配置文件,想知道是否有一种方法可以设置“phonenum = 123456789”一次,然后在我的xml文件中的其他地方使用“phonenum”而不是“123456789”。

例如:

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

现在在“urls”键的值中,我想使用“phonenum”而不是实际的数字。这种方式,如果有人必须改变它,他们只在一个地方(在其定义的地方)而不是在每个网址中更改它。

任何帮助将不胜感激! 谢谢!

1 个答案:

答案 0 :(得分: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}/.../.../.../" />