据我从 W3school 了解到的是,如果属性“elementFormDefault”设置为 unqualified
在 XML 模式上,那么 XML 元素将没有前缀。如果我有一个模式设置了不合格的元素表单并且正在导入另一个模式,这会是一个问题吗?
示例:我有 Schema A 导入了 Schema B 的东西。然后在最不幸的情况下,模式 A 有一个名为“ItemName”的元素,其中模式 B 也有一个。由于我们不能在这里使用前缀,因此没有简单的方法来区分这两个元素。
这是一个有效的场景吗?
如果是,我如何区分它们?
如果是,这是否意味着模式可以混合和匹配 elementFormDefault=qualified 和未限定的命名空间,并且不会在其中存在潜在的元素名称冲突?
谢谢你的帮助!
最佳答案
对我来说,这不是一个有效的场景,XSD 定义绝不能发生冲突,否则会使您的 XSD 集无效。如果 2 个实体具有相同的名称并且必须在公共(public)模式中使用/导入,则它们必须通过命名空间(elementFormDefault
限定,targetnamespace
- 和默认命名空间 - 存在)进行区分。
如果您正在使用一个好的 XML 模式验证器,它应该会引发一个错误,或者至少是一个警告。如果它不是“无效”,这是非常危险的,因为解析器或验证器会随机选择一个定义。
如果我能在 w3.org 中找到断言这一点的几行,我将进行更新:-)
关于xml - XML 模式可以混合和匹配合格和不合格的命名空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319011/