如何在Netbeans 8.2中使用XSD 1.1?

时间:2018-07-04 12:29:45

标签: java xml netbeans xsd xsd-1.1

Netbeans似乎拒绝了XSD 1.1支持的某些XSD标签,例如“ assert”:

  

cvc-complex-type.2.4.a:从元素中发现无效的内容   'xs:assert'。价值观之一   '{“ http://www.w3.org/2001/XMLSchema”:属性,   “ http://www.w3.org/2001/XMLSchema”:attributeGroup,   “ http://www.w3.org/2001/XMLSchema”:anyAttribute}'是预期的。 [205]

我尝试使用these examples中的某些方法而没有成功。我该怎么做才能解决我的问题?

据我所知,我无需在XSD架构中指定使用XSD 1.1的某些功能:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

1 个答案:

答案 0 :(得分:1)

这完全取决于“在NetBeans 8.2中使用XSD 1.1” 的意思,但是我假设您想对某些对象使用NetBeans的上下文菜单项 Validate XML 具有XSD 1.1功能的 *。xsd 文件(例如 assert )。如果执行此操作,则会看到您报告的相同“ cvc-complex-type.2.4.a:发现无效内容...” 错误。

无法自定义 Validate XML 命令所使用的验证器,显然,它使用JDK的 javax.xml API进行验证。 NetBeans 8.2使用Java 8,但是even with JDK 9 there is no way to validate XSD 1.1 features

  

Java 9。

     

...最大的新闻是,终于有了Xerces的内部端口   更新。甲骨文(以及之前的Sun)在   忽略了这么长时间:Java在Xerces 2.7.n中停留了11年   好年。新端口等效于Apache   Xerces 2.11.0。 (注意:XSD仍仅为1.0,XSD 1.1更新具有   ,但这可能反映了Apache Xerces的运行缓慢   正式进行更改的步伐。)

使用Apache NetBeans 9.0 RC1时会发生相同的问题,因此直到以下两个问题都可能无法解决:

  • NetBeans使用JDK,该JDK使用支持XSD 1.1功能验证的Xerces版本。
  • NetBeans使用不同的方法进行XSD验证。

我也看不到任何有帮助的NetBeans插件。当然,仍然有一些第三方工具和(可能)用于Maven项目的配置可能会有所帮助,但我看不到仅使用NetBeans的解决方案。