Как объединить 2 схемы с составным словарным документом - PullRequest
0 голосов
/ 26 марта 2019

Мне пришлось создать составной XML-документ, объединяющий элементы и атрибуты из обоих созданных словарей. Мне нужно создать комбинированную схему для составного документа и подтвердить, что составной документ проходит проверку. Я положил два словарных документа в один. Я не уверен, как создать комбинированную схему.

<!--Vocabulary1S
-->

<reg:smartphones xmlns:reg="http://example.com/smartphones/vocab"
                 reg:schemaLocation="http://example.com/smartphones/vocab/ns vocab1schema.xsd">

   <reg:choices>Smart Phones

      <reg:phones>

<!-- skip-->
 <!--Vocabulary2 -->

<plu:smartphones xmlns:plu="http://example.com/smartphones/vocab"
                 plu:schemaLocation="http://example.com/smartphones/vocab/ns vocab2schema.xsd">

<plu:pluschoices>Plus Size Choices

   <plu:bigphones>
      <plu:bigphone>

<!-- not complete code, end of doc-->

<!--start of combined schema Vocab1Schema -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:cc="http://example.com/smartphones/vocab/ns"
           targetNamespace="http://example.com/smartphones/vocab/ns"
           elementFormDefault="qualified" attributeFormDefault="unqualified">

   <xs:element name="SmartPhones">

<!-- Vocab2Schema -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.com/smartphones/vocab/ns"
           elementFormDefault="qualified" attributeFormDefault="unqualified"
>

<xs:element name="SmartPhones">
   <xs:complexType mixed="true">

1 Ответ

0 голосов
/ 26 марта 2019

Если ваши два документа схемы содержат определения с одним и тем же targetNamespace, вы можете создать комбинированную схему, просто используя

<xs:schema targetNamespace="...">
  <xs:include schemaLocation="schema1.xsd"/>
  <xs:include schemaLocation="schema2.xsd"/>
</xs:schema>

Это приведет к ошибке при наличии противоречивых определений, например, если два документа схемы содержат противоречивые определения элемента «SmartPhones». Невозможно объединить две схемы (или ссылаться на них обе в одном и том же экземпляре документа), если они имеют подобные конфликты; сначала вам придется преобразовать один из документов экземпляра и одну из схем в другое пространство имен.

...