【问题标题】:RelaxNG: a list pattern must not contain an element pattern (list//ref)RelaxNG:列表模式不能包含元素模式(list//ref)
【发布时间】:2017-12-03 00:44:52
【问题描述】:

我正在尝试在 RelaxNG 中列出不同的出版物(书籍、文章、收藏),但是当我尝试使用列表标签时出现错误:

<?xml version="1.0" encoding="UTF-8"?>
<grammar
    xmlns="http://relaxng.org/ns/structure/1.0"
    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">  

  <start>
    <element name="publications">
      <oneOrMore>
        <interleave>
          <list>
            <choice>
              <element name="article">
                <element name="publication_name">
                  <text/>
                </element>
                <element name="authors">
                  <text/>
                </element>
                <element name="publisher">
                  <text/>
                </element>
                <element name="volume">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="number">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="pages">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="citation">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="year">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
              </element>
              <element name="book">
                <element name="publication_name">
                  <text/>
                </element>
                <element name="authors">
                  <text/>
                </element>

                <element name="publisher">
                  <text/>
                </element>
                <element name="citation">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="year">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
              </element>
              <element name="chapter">
                <element name="publication_name">
                  <text/>
                </element>
                <element name="authors">
                  <text/>
                </element>
                <element name="collection_name">
                  <text/>
                </element>
                <element name="editors">
                  <text/>
                </element>
                <element name="citation">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
                <element name="year">
                  <data
                      datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
                      type="int"/>
                </element>
              </element>
            </choice>                       
          </list>
        </interleave>
      </oneOrMore>
    </element>
  </start>
</grammar>

我希望能够将出版物分为三个类别。

我得到的错误是:

列表模式不得包含元素模式(第 7.1 节) RELAX NG 规范要求简化 XML 形式的 schema 不包含任何与路径列表匹配的元素//ref)

【问题讨论】:

    标签: xml relaxng


    【解决方案1】:

    请参阅RelaxNG Specification 中的规则 4.19。它通过 refs 将元素替换为新创建的定义,但 list//ref 是被禁止的(正如错误所说,请参阅前面提到的规范中的 7.1)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2012-05-30
      • 2017-10-02
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      相关资源
      最近更新 更多