Хочу разбить схему на общую часть + «частную» часть.Как? - PullRequest
0 голосов
/ 07 января 2010

У меня есть файл схемы, который я хотел бы разделить на две части. Один с общими полями, а другой с определенными полями в JAXB (2.1) для повторного использования. Как это сделать?

<?xml version="1.0" encoding="UTF-8" ?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="content">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="idPaciente"/>
        <xs:element ref="fechaCita"/>
      </xs:sequence>
      <xs:attribute name="user" type="xs:string" use="required" />
      <xs:attribute name="authorityId" type="xs:string" use="required" />
      <xs:attribute name="userName" type="xs:string" use="required" />
      <xs:attribute name="profileId" type="xs:string" use="required" />
      <xs:attribute name="sessionId" type="xs:string" use="required" />
      <xs:attribute name="country" type="xs:string" use="required" />
      <xs:attribute name="method" type="xs:string" use="required" />
      <xs:attribute name="language" type="xs:string" use="required" />
    </xs:complexType>   </xs:element>

  <xs:element name="idPaciente" type="xs:string"/>   <xs:element name="fechaCita" type="xs:string"/>

</xs:schema>

Оба элемента в последовательности являются необычными полями, в то время как остальные будут общей частью. Как это можно сделать?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 января 2010

Не уверен, что я понимаю вопрос, но "расширит" ли это вашу проблему?

  <xsd:complexType name="AbstractType" abstract="true">
    <xsd:sequence>
      <xsd:element name="common1" type="xsd:string" minOccurs="1" maxOccurs="1" />
      <xsd:element name="common2" type="xsd:string" minOccurs="1" maxOccurs="1" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="MyType">
    <xsd:complexContent>
      <xsd:extension base="AbstractType">
        <xsd:sequence>
          <xsd:element name="uncommon1" type="xsd:string" minOccurs="1" maxOccurs="1" />
          <xsd:element name="uncommon2" type="xsd:string" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
0 голосов
/ 07 января 2010

Трудно дать совет, не зная ваших требований. Вы можете объявить последовательность как необязательную (MinOccurance = "0"), если вы хотите проверять документы с этими двумя конкретными элементами или без них или вы можете поместить определенные поля в другое пространство имен.

Кстати - вы все равно должны объявлять / использовать пространства имен, я часто сталкиваюсь с ужасными побочными эффектами, когда мне лень в этой части ...

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