在XML文档中重用属性值

时间:2014-09-08 17:53:12

标签: xml xsd

我有一个基于XML Schema的XML文件。架构不是由我创建的,所以我不能改变它。现在我需要在XML文件中的几个地方使用相同的属性值。

有没有办法为值定义宏,并将其用于属性值以避免重复?

2 个答案:

答案 0 :(得分:0)

Here's some background on how to reuse components from XML schema

如果您尝试重用的架构定义了一个属性组,您可以使用ref这样在架构中重用它:

<xs:attributeGroup ref="otherNS:NameOfAttributeGroup"/>

此属性组可以是您发明的complexType定义的一部分。

为了实现这一点,您需要重新使用的模式来定义全局这样的属性组。如果它没有(本地定义)那么你就被软管了,你不能引用那个属性。

答案 1 :(得分:0)

  

有没有办法为值定义宏,并将其用于属性值以避免重复?

不确定;它被称为通用实体。我们假设您希望以下XML中的所有属性具有相同的值,并且要将该值更改为要求仅更改文档中的一个位置,而不是五个。

<doc>
  <a foo="ajdalkhf lkajh"/> 
  <b>
    <c bar="adadf">data here</c>
    <d baz="aadfa dadf">more data here</d>
  </b>
  <e baffle="aasdh dadf"/>
  <f gorp="alkhf dlkajhds"/>
</doc>


<!DOCTYPE doc [
<!ENTITY cookie "ajdalkhf lkajh">
]>
<doc>
  <a foo="&cookie;"/> 
  <b>
    <c bar="&cookie;">data here</c>
    <d baz="&cookie;">more data here</d>
  </b>
  <e baffle="&cookie;"/>
  <f gorp="&cookie;"/>
</doc>

这个答案假设您没有要求重复使用XSD架构文档的某些部分,而是接受您的意思:您的问题是在XML文档的多个位置提供相同的属性值。如果FroberOfBits提供的答案是关于主题的,那么这个答案就不会出现,反之亦然。