【发布时间】:2021-03-17 01:16:25
【问题描述】:
我在 XSD 文件“严格”中有一个简单元素,它只接受布尔值,但是当我使用 xs:extension 时,不再强制执行该类型。
这里声明没有属性:
<xs:element name="strict" type="xs:boolean"/>
并且正确地执行了 xml。即:
<strict>false</strict> <!-- succeeds -->
<strict>XXXXX</strict> <!-- fails -->
还有属性:
<xs:element name="strict"> <!-- purposely needed to remove type from this line -->
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean"> <!-- the base is the same as the previous type -->
<xs:attribute ref="operation"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
然后我这里故意的坏元素不再强制执行。
<strict operation="none">XXXXX</strict> <!-- succeeds... -->
<strict operation="none">false</strict> <!-- succeeds as well... -->
我注意到,当我使用xs:extension 时,我不能再将type 放入我的xs:element,并且我认为base="xs:boolean" 会覆盖我,但事实并非如此。
我的最终目标:允许 xs:element 中的属性并强制执行数据类型
注意: 我正在使用 IntelliJ XML/XSD 功能通过使用它的内部 lint 引擎突出显示错误来帮助指导我。所以这可能是 IntelliJ 在到期时给出错误(或不给出错误)?非常值得怀疑,因为我觉得这是 XML 的一个非常基本的方面。
参考:
- XML & XSD validation failed: Element has both a 'type' attribute and a 'anonymous type' child
- 很遗憾,这个答案没有讨论类型。
更新: 在@kjhughes 的帮助下 - 确定这可能是一个 IntellJ 错误。 https://youtrack.jetbrains.com/issue/IDEA-257186
【问题讨论】:
标签: xml intellij-idea xsd xsd-validation xml-validation