全球属性:利弊

时间:2013-12-24 05:54:52

标签: xml xsd

我们使用Garden of Eden XML Schema设计模式。 Some sources声明属性必须是全局的。其他来源仅提及全局元素和类型,但不限制属性使用。 Here是本地属性的一个示例。

我应该使用全局属性吗?

正如我所看到的,在大多数用例中必须限定全局属性。但有些sources表示本地属性应该是不合格的(我认为非本地属性也应该是不合格的,以保持一致性):

  

5.2 attributeFormDefault

     

此属性设置应始终设置为不合格。在理解这个概念时,证明设定这个值的时间并不值得任何增量值。行业最佳实践建议始终将此属性值设置为不合格。

Here是一个带有attributeGroup的hack,它允许属性不合格。但我仍然不明白是否应该使用全局属性。

1 个答案:

答案 0 :(得分:1)

你问题的答案很可能应该是“不要使用全局属性,除非你真的需要”。因为unless ......我认为没有一个答案能够发挥作用;换句话说,背景是重要的。

全局属性基本上是“属于”合格命名空间的属性;这是确保我的精心命名的属性不会与你的碰撞的机制;它的语义脱颖而出。想象一下xsi:type属性的有用性......不合格。

有些模型会接受合格的属性作为提供现有模型扩展的唯一方法(参见##其他用途) - 那么你别无选择。

某些处理模型(即您使用XML的方式)可能会受益于使用全局属性,只是因为在XSLT(作为示例)或流类型API中匹配这些属性可能更多“无上下文” (保证)对相关价值的明确解释。

其他处理模型(例如那些依赖XSD编码绑定,JAXB为1)的处理模型使上述区别无关紧要。