我有一个基于XML Schema的XML文件。架构不是由我创建的,所以我不能改变它。现在我需要在XML文件中的几个地方使用相同的属性值。
有没有办法为值定义宏,并将其用于属性值以避免重复?
答案 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提供的答案是关于主题的,那么这个答案就不会出现,反之亦然。