如何在XML Schema的元素范围内的任何地方定义maxOccurs?

时间:2019-05-04 21:58:03

标签: xml xsd xsd-validation xml-validation

我想知道是否有一种方法可以在document.addEventListener('keydown', function(e) { for (var i = 0; i < editor.length; i++) 元素中定义// This is the code that doesn't work document.addEventListener('keydown', function(e) { for (var i = 0; i < editor.length; i++) { let content = document.getElementById("editor").innerHTML; console.log(content); const sqlite3 = require('sqlite3').verbose(); let db = new sqlite3.Database('./appdata/resources/protodatabase.evv'); let sql = 'UPDATE Subchapters SET subtext=? WHERE subid=1'; db.run(sql, content, function (err) { console.log(); if (err) { return console.error(err.message); }}); db.close(); }; }); 的maxOccurs吗?只要SELECT COLUMN FROM Table; OUT PUT: A B C D F contentabc中的content个元素有多少个都无所谓,只要整个{{ 1}}。预先感谢!

a

1 个答案:

答案 0 :(得分:0)

XSD 1.0

不可能。必须在XSD的带外进行检查。

XSD 1.1

可以使用xs: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="abc">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="a" type="HasContentType"/>
        <xs:element name="b" type="HasContentType"/>
        <xs:element name="c" type="HasContentType"/>
      </xs:sequence>
      <xs:assert test="count(*/content) &lt;= 5"/>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="HasContentType">
    <xs:sequence>
      <xs:element name="content" type="xs:string" 
                  minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

注意::以上声明将content的子元素中出现的abc个元素的总数限制为。如标题所示,如果您想约束abc下方层次结构中的任何位置出现在元素范围内的任何地方,您可以改用以下断言:

      <xs:assert test="count(.//content) &lt;= 5"/>