【问题标题】:XSD doesn't validate: "Element 'assert' is invalid misplaced, or occurs too often."XSD 不验证:“元素 'assert' 是无效的,放错了地方,或者发生得太频繁了。”
【发布时间】:2019-01-28 05:39:00
【问题描述】:

XSD 验证从 http://www.utilities-online.info/xsdvalidation/ 失败。我尝试了可能不同的 XSD 提交 - 都失败了。我从之前的帖子中复制了一个简单的代码示例。

错误 - s4s-elt-invalid-content.1:“#AnonType_root”的内容无效。元素 'assert' 无效放错位置,或出现太频繁。

<?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>

【问题讨论】:

  • 看起来您正在使用 XSD 1.0 验证器。 xs:assert 仅适用于 XSD 1.1。

标签: validation xsd


【解决方案1】:

即使您写的是&lt;xs:aaassert&gt; 而不是&lt;xs:assert&gt;,它也会报告相同的错误。 这意味着,它不理解 XSD 1.1

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

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

所以,他们实际上使用的是 JAXP 1.4。另一方面,Java library that supports XSD 1.1 中提到 JAXP 1.4 不能正确支持 XSD 1.1。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多