XSD无法验证:“元素'assert'无效放置不正确,或发生得太频繁。”

时间:2019-01-28 05:39:01

标签: validation xsd

XSD验证从http://www.utilities-online.info/xsdvalidation/开始失败。我尝试了不同的XSD提交-全部失败。我从先前的发布中复制了一个简单的代码示例。

  

错误-s4s-elt-invalid-content.1:“#AnonType_root”的内容无效。元素“断言”无效放错位置,或者发生得太频繁。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
           vc:minVersion="1.1">

  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="1" name="Type" type="xs:integer" />
        <xs:element minOccurs="0" maxOccurs="1" name="Comment" type="xs:string" />
      </xs:sequence>
      <xs:assert test="Comment or not(Type = 0)"/>
    </xs:complexType>
  </xs:element>

</xs:schema>

2 个答案:

答案 0 :(得分:0)

即使您写<xs:assert>而不是<xs:aaassert>,它也会报告相同的错误。 这意味着,它不了解XSD 1.1

此外,在该页面http://www.utilities-online.info/xsdvalidation/上,您可以阅读:

  

此页面中使用的库是jaxp,它是Java™SE运行时环境(内部版本1.7.0_06-b24)的1.4版XML处理Java API。

因此,他们实际上使用JAXP 1.4。另一方面,在Java library that supports XSD 1.1中提到JAXP 1.4不正确支持XSD 1.1。

好吧,这就是使用一些免费的在线东西的意思。您应该期待它,并准备寻找其他东西...

答案 1 :(得分:0)

谢谢您和ColdFusion。 ColdFusion,聪明的测试,我会在未来牢记这一点。我确实找到了另一个支持断言的免费验证器。 https://www.liquid-technologies.com/online-xsd-validator。总而言之,它是一个更好的验证器,可以识别XSD语法错误的实际位置。第一个验证器没有指示XSD语法错误的位置。