Проблема при проверке файла XSD: тип содержимого производного типа и его содержимого должен быть смешанным или оба только для элементов - PullRequest
4 голосов
/ 14 января 2011

У меня есть следующая XML-схема:

<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
targetNamespace="urn:ietf:params:xml:ns:netconf:base:1.0"
...

  <complexType name="dataInlineType">
    <xs:complexContent>
      <xs:extension base="xs:anyType"/>
 </xs:complexContent>
   </complexType>

<complexType name="get-config_output_type__" >
  <complexContent>
     <extension base="netconf:dataInlineType">
        <sequence>
           <element name="data">
              <complexType>
                 <sequence>
                    <element name="__.get-config.output.data.A__"
                       minOccurs="0" maxOccurs="unbounded"
                       />
                 </sequence>
              </complexType>
           </element>
           <element name="__.get-config.A__" minOccurs="0"
              maxOccurs="unbounded"/>
        </sequence>
     </extension>
  </complexContent>

И я получаю следующую ошибку:

cos-ct-extends.1.4.3.2.2.1.a: Тип содержимого производного типа и тип его основы должны быть смешанными или оба только для элементов.Тип 'get-config_output_type__' является только элементом, но его базовый тип - нет.

Если поставить оба элемента mixed="true", я получу другую ошибку:

cos-nonambig: WC [## any] и «urn: ietf: params: xml: ns: netconf: base: 1.0»: данные (или элементы из их группы замещения) нарушают «Уникальную атрибуцию частиц».Во время проверки этой схемы для этих двух частиц будет создана неоднозначность.

Я использовал Eclipse для проверки моей схемы, так что я могу сделать?

1 Ответ

0 голосов
/ 15 января 2011

Это лучше всего описывает вашу проблему после исправления, но я думаю, что вы все еще конфликтуете в Схеме 1.1: http://en.wikipedia.org/wiki/Unique_Particle_Attribution

Прежде всего, ваши определения не имеют префикса xs: alias, что может вызвать путаницу и перенаправить правила проверки в netconf? Поэтому попробуйте добавить этот префикс ко всем элементам схемы.

Несмотря на то, что в MSVS это, похоже, проходит валидацию, я думаю, что вы, скорее всего, получите эту ошибку в большинстве валидаторов, где почти все определения получены из типа «anyType», который добавляет дополнительные элементы. Это потому, что ваш базовый тип уже включает все возможные комбинации, и я не думаю, что сопоставление с подстановочными знаками будет слабым в производном классе, как это обычно происходит. Вместо этого вы можете определить один корневой тип, который содержит элемент anyType и является производным от него. Если Eclipse проверяет правила схемы 1.1, это должно работать нормально из-за слабых свойств сопоставления с подстановочными знаками. Если это не помогает, определите корневой тип, который просто смешан, и просто сделайте один из этих типов типом с xs: any element и mixed = "true". Это оставляет вам возможность создать муравьиный подтип, который также может ограничивать допустимые элементы. В остальной части схемы, которая использует «dataInlineType», вы можете просто использовать подстановку для нее, объявив substitutionGroup. Я предполагаю, что это может быть лучшим решением в целом для вашего фрагмента схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...