Intellij IDEA:如何验证XML SCHEMA 1
我正在用JDK 7试用IDEA 13.02中的XML SCHEMA 1.1
这是我从教程中获得的XML架构代码。 当我在IntelliJ IDEA中打开此文件并单击“验证”时,出现以下错误:
cvc-complex-type.2.4.a:从元素'openContent'开始找到无效的内容。 “{”http://www.w3.org/2001/XMLSchema":annotation,“http://www.w3.org/2001/XMLSchema":simpleContent”,http://www.w3.org之一/ 2001 / XMLSchema“:complexContent,”http://www.w3.org/2001/XMLSchema":group“,http://www.w3.org/2001/XMLSchema":all,”http:// www .w3.org / 2001 / XMLSchema“:choice,”http://www.w3.org/2001/XMLSchema":sequence“,http://www.w3.org/2001/XMLSchema":attribute,”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架构。
我使用了WebStorm 8的XSD 1.1,我相信它使用与IDEA相同的解析器。
如果您的XML验证程序支持XSD 1.0和1.1(不仅仅是一个版本),但无法自动识别XSD的版本,则需要添加属性(如所述的@helderdarocha)
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1"
到“模式”标签和验证器将知道什么版本需要用于检查。
但是,如果您的XML验证程序仅支持XSD 1.0,则应删除不支持的项目 ,这是验证的唯一方法,对minVersion的引用将不起作用。
例如:
XML Validator“.Net 4.0(XSD 1.0)”将针对无效文档进行说明,无论您是否指定了最低版本;
XML Validator“Xerces 2.11.0”支持两种版本的XSD,但是:
2.1如果您将在XSD 1.0模式下验证您的文档,则验证程序将说明不正确的文档,如果未指定“minVersion”。 如果添加minVersion,验证器将跳过检查1.1版本中的项目。
2.2如果您将在XSD 1.1模式下验证文档,则不需要“minVersion”。
所以,我想说这个问题不在IDEA中:如果你使用了另一个验证器,检查可以通过。 我建议始终在多个验证器和版本上检查XML,以确保您的XML是真实的。
链接地址: http://www.djcxy.com/p/18743.html