我正在使用 JDK 7 在 IDEA 13.02 中尝试 XML SCHEMA 1.1
这是我从教程中获得的 XML 架构代码。当我在 IntelliJ IDEA 中打开此文件并单击“验证”时,出现以下错误:
cvc-complex-type.2.4.a:发现无效内容开头 元素“开放内容”。之一 '{“http://www.w3.org/2001/XMLSchema”:注释, “http://www.w3.org/2001/XMLSchema”:简单内容, “http://www.w3.org/2001/XMLSchema”:复杂内容, “http://www.w3.org/2001/XMLSchema”:组, “http://www.w3.org/2001/XMLSchema”:全部, “http://www.w3.org/2001/XMLSchema”:选择, “http://www.w3.org/2001/XMLSchema”:序列, “http://www.w3.org/2001/XMLSchema”:属性, “http://www.w3.org/2001/XMLSchema”:attributeGroup, 预期为“http://www.w3.org/2001/XMLSchema”:anyAttribute}'。
这是使用 XML Schema 1.1 增强功能的 XSD 文件:
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.books.org"
xmlns:pub="http://www.books.org"
elementFormDefault="qualified">
<complexType name="Publication" abstract="true">
<openContent mode="interleave">
<any />
</openContent>
<sequence>
<element name="Title" type="string" />
<element name="Author" type="string" />
<element name="Date" type="gYear"/>
</sequence>
</complexType>
<complexType name="BookPublication">
<complexContent>
<extension base="pub:Publication">
<openContent mode="none">
</openContent>
<sequence>
<element name="ISBN" type="string"/>
<element name="Publisher" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="BookStore">
<complexType>
<sequence>
<element name="Book" type="pub:BookPublication" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
</schema>
有没有办法验证这一点或升级 IDEA 使用的验证器?
尝试将
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
和 vc:minVersion="1.1"
添加到 <schema>
:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.books.org"
xmlns:pub="http://www.books.org"
elementFormDefault="qualified"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1"
> ... </schema>
它将通知 IDEA 您正在使用 XSD 1.1 架构。
我已将 XSD 1.1 与 WebStorm 8 一起使用,我相信它使用与 IDEA 相同的解析器。
如果您的XML验证器支持XSD 1.0和1.1(不仅是一种版本),但无法自动识别XSD的版本,您需要添加属性(就像@helderdarocha所说)
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1"
“schema”标签和验证器将知道需要使用什么版本进行检查。
但是如果您的 XML 验证器仅支持 XSD 1.0,您应该删除不支持的项目,这是验证的唯一方法,引用 minVersion 将不起作用。
例如:
XML 验证器“.Net 4.0 (XSD 1.0)”会提示文档无效,无论您是否指定了最低版本;
XML 验证器“Xerces 2.11.0”支持两个版本的 XSD,但是:
2.1 如果您将在 XSD 1.0 模式下验证您的文档,如果未指定“minVersion”,验证器将提示文档不正确。如果添加了 minVersion,验证器将跳过检查 1.1 版本中的项目。
2.2 如果您将在 XSD 1.1 模式下验证文档,则不需要“minVersion”。
所以,我想说问题不在 IDEA 中:如果您使用其他验证器,检查就可以通过。我建议始终在多个验证器和版本上检查 XML,以确保您的 XML 是真实正确的。