【发布时间】:2018-06-26 14:20:34
【问题描述】:
XML 架构定义中的<any> 元素允许一个架构被另一个架构扩展。
我尝试按照https://www.w3schools.com/xml/schema_complex_any.asp 给出的示例进行操作。
但是,只要 children 元素不是命名空间限定的,IntelliJ 就会给我验证错误消息“匹配的通配符是严格的,但找不到元素 'children' 的声明”。我可以通过将 'xmlns="https://www.w3schools.com"' 添加到 children 元素来消除此错误。虽然这很有意义,但我真的很喜欢“插入式”扩展的可能性,而无需指定命名空间。我缺少一些隐藏的功能吗?还是示例有缺陷,您总是需要明确指定命名空间?
我正在使用 IntelliJ 编辑和验证 XML Schema 和 XML 文件,并激活了 XML Schema 1.1。
我对示例中的family.xsd 片段进行了如下补充:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.microsoft.com"
targetNamespace="http://www.microsoft.com"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
问题是:W3Schools 示例是否存在缺陷,或者它是否应该在不为“children”元素指定命名空间的情况下工作?
感谢您的提示和想法!
【问题讨论】:
-
请不要告诉我们它不起作用。告诉我们它是如何失败的。您有什么要求此架构无法满足?
-
对不起,我应该更具体一些。我更新了问题。到目前为止,我只想清楚地了解在使用另一个模式中定义的元素扩展一个模式的上下文中的“任何”机制。
-
感谢您添加故障症状。这将更容易看出问题所在。它似乎在“processContents”区域而不是命名空间。