Intellij IDEA:如何验证 XML SCHEMA 1
Posted
技术标签:
【中文标题】Intellij IDEA:如何验证 XML SCHEMA 1【英文标题】:Intellij IDEA : How to validate XML SCHEMA 1 【发布时间】:2014-04-10 22:02:36 【问题描述】:我正在使用 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":simpleContent, "http://www.w3.org/2001/XMLSchema":complexContent, "http://www.w3.org/2001/XMLSchema":group, “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 使用的验证器?
【问题讨论】:
How to indicate that an xml schema that requires schema 1.1 features?的可能重复 【参考方案1】:尝试将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 Schema。
我将 XSD 1.1 与 WebStorm 8 一起使用,我相信它使用与 IDEA 相同的解析器。
【讨论】:
不幸的是,Id 不起作用。网址“w3.org/2007/XMLSchema-versioning”正确吗? IDEA 错误是 (1)“外部资源 w3.org/2007/XMLSchema-versioning 未注册”和 (2)“文件过早结束”。我已经注册了,但是还是不行。 应该是。检查w3.org/2007/XMLSchema-versioning。也许您可以在那里升级您的 IDEA。由于 XSD 1.1 是相当新的,它们可能只在最近的版本中支持它。我的 WebStorm 8 是抢先体验版。我不确定它是否适用于 WS 7。 但是Premature end of file
看起来像别的东西,不是格式良好的问题。【参考方案2】:
如果您的 XML-validator 支持 XSD 1.0 和 1.1(不仅仅是一个版本),但不能自动识别 XSD 的版本,您需要添加属性(就像@helderdarocha 所说的)
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1"
到“模式”标签和验证器将知道需要使用哪个版本进行检查。
但如果您的 XML-validator 仅支持 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 正确无误。
【讨论】:
以上是关于Intellij IDEA:如何验证 XML SCHEMA 1的主要内容,如果未能解决你的问题,请参考以下文章
maven配置setting.xml修改远程和本地仓库地址+Intellij IDEA编辑pom.xml配置依赖
如何配置 IntelliJ IDEA 以对 MySQL 数据源使用明文密码身份验证?
java开发工具intellij idea如何创建不同类型的xml文件呢?
intellij idea如何快速将 xml 文件的所有展开的节点闭合