XML模式可以混合使用限定名称空间和非限定名称空间吗?

时间:2015-02-04 10:27:23

标签: xml namespaces

据我所知,从W3school可以看出,如果属性“elementFormDefault”在XML模式上设置为unqualified,则XML元素将不具有前缀。如果我有一个具有非限定元素表单集的模式并导入另一个模式,这会成为一个问题吗?

示例:我有Schema A导入Schema B的东西。然后在最不幸的情况下,Schema A有一个名为“ItemName”的元素,其中Schema B也有一个元素。由于我们不能在这里使用前缀,因此没有简单的方法来区分这两个元素。

这是一个有效的场景吗?

如果是,我如何区分它们?

如果是的话,这是否意味着一个模式可以混合和匹配elementFormDefault =存在于其中的限定和不合格的命名空间,并且没有潜在的元素名称冲突?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

首先直接回答你的问题:elementFormDefault就是它所说的,它只是元素声明中“form”属性的默认值,你可以根据需要将各个声明的form属性设置为不同的值

但我从来没有见过有人这样做过,而且可能有很好的理由。

但现在,更仔细地阅读你的问题,其中有几个错误的假设。

首先,elementFormDefault适用于单个架构文档,而不适用于整个架构。特别是,它不会影响导入的架构文档。

其次,你说如果你使用elementFormDefault = unqualified,那么元素将没有前缀。那不太准确。这意味着在复杂类型中本地声明的元素将不具有任何名称空间URI。重要的是命名空间,而不是前缀。

第三,elementFormDefault = unqualified(很少使用,偶然)的要点就是说你不需要在命名空间中放置元素,因为它们被上下文消除歧义。是的,这允许您拥有两个具有相同名称和不同内容模型的不同元素。如果你认为这是一个坏主意,那么就不要这样做。但是,由于一个人将BOOK作为父母而另一个人拥有PERSON,因此区分两个TITLE元素是相当可行的。有些人会说这通常比将它们放在不同的命名空间中更简单。