我的 XML 文件对子元素有限制,但根元素的名称实际上并不重要。如何将其合并到我的 XSD 中?我试过使用<xs:any>
,但我得到:
“S4s-elt-invalid-content.1:'schema' 的内容无效。元素 'any' 无效、错位或经常出现。”
所以我尝试像这样从元素标签中遗漏名称:<xs:element>
但后来我得到:
“S4s-att-must-appear:属性‘名称’必须出现在元素‘元素’中。”
我的 XML 文件对子元素有限制,但根元素的名称实际上并不重要。如何将其合并到我的 XSD 中?我试过使用<xs:any>
,但我得到:
“S4s-elt-invalid-content.1:'schema' 的内容无效。元素 'any' 无效、错位或经常出现。”
所以我尝试像这样从元素标签中遗漏名称:<xs:element>
但后来我得到:
“S4s-att-must-appear:属性‘名称’必须出现在元素‘元素’中。”
使用命名类型,并告诉您的验证器使用该类型在根元素处开始验证。
(这有一个可能的障碍:XSD 1.0 建议将其作为一种可能的调用选项,但不需要验证器提供它,因此不能保证您使用的验证器接口将支持它。取决于您的验证器。值得一试,在至少。)
另一种说法是:您已经拥有了您所要求的内容,因为您的 XSD 架构从不关心文档实例的根元素被称为什么。XSD 模式提供了一组元素和类型声明(除其他外)。可以请求验证器在文档中的任何位置开始验证,而不仅仅是根,并且可以使用元素声明或类型声明,或者以“宽松通配符模式”(最常见的默认值)。如果您的验证器没有提供您想要的调用选项,这是您选择验证器的缺陷,而不是 XSD 中的差距。
我想我可能只是让要求更严格,并坚持使用特定标签作为根元素。应用程序不关心的事实并不是真正的问题。
存在这种限制似乎(对我来说)很奇怪,但我是 XSD 的新手。