нужно подтянуть слабую схему для вложенной структуры - PullRequest
0 голосов
/ 12 марта 2020

Я поддерживаю библиотеку XML документов, которые соответствуют немного более слабой схеме. Базовая c структура этих документов (без особых подробностей) схожа с этой:

<document>
  <title/>
  <section>
    <title/>
    <section>
      <title/>
      <para>...
    </section>
  </section>
</document>

В основном документ может состоять из заголовка, за которым следует один или несколько разделов, а раздел может состоять из заголовок, за которым следует один или несколько разделов, или последовательность других элементов, таких как абзацы, таблицы, изображения и т. д. c.

Используемая нами схема содержит следующее:

<xs:complexType name="sectiontype">
  <xs:sequence>
    <xs:element ref="title"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="section"/>
      <xs:element ref="para"/>
      <xs:element ref="table"/>
      <xs:element ref="include"/>
      <xs:element ref="graphic"/>
      ...
    </xs:choice>
  </xs:sequence>
</xs:complexType>

и использует sectiontype в качестве модели содержимого для элемента «section». К сожалению, этот контент позволяет разделу содержать два дочерних раздела с точкой между ними. Можно ли улучшить схему, чтобы раздел со смесью разделов и других элементов был недействительным? Или мне нужно преобразовать документы так, чтобы раздел разделов был одним типом элемента (назовем его родительским разделом), а раздел другого содержимого - другим (назовем его дочерним разделом)?

...