XSD: ComplexType - PullRequest
       9

XSD: ComplexType

0 голосов
/ 10 июня 2009

У меня сложный тип, как:

<xsd:complexType name="NightlyRate">
    <xsd:complexContent>
        <xsd:extension base="com:Money">
            <xsd:attribute name="night" type="com:Number" use="required"/>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

Теперь я хочу добавить дочерний элемент в "NightlyRate", который сам имеет тип complexType. Я попытался добавить:

<xsd:element name="xxx" type"com:Money"/>

после элемента complexContent, но он выдает ошибку, что элемент не ожидается, также часть проблемы в том, что тип этого сложного элемента совпадает с типом базы расширения. Я использую JAXB. Есть ли другой способ добиться этого?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Чтобы получить подэлементы в xsd:complexType, вы должны поместить в него xsd:sequence (первый уровень, вместе с аннотациями и атрибутами), который утверждает, что вы хотите ... субэлементы. В этой последовательности вы можете включать элементы других определенных типов или определять новые типы.

См. сложные элементы XSD в W3Schools и пример womp.

В некоторых случаях вы можете использовать элемент xsd:any, чтобы разрешить пока неопределенные расширения (свободные).

1 голос
/ 10 июня 2009
<xsd:complexType name="NightlyRate">
    <xsd:complexContent>
        <xsd:extension base="com:Money">
            <xsd:sequence>
                <xsd:element name="xxx" type"com:Money">
                   <xsd:complexType>
                      <xsd:complexContent>
                             /// Attributes here
                      </xsd:complexContent>
                   </xsd:complexType>
                </xsd:element>
            </xsd:sequence>

            <xsd:attribute name="night" type="com:Number" use="required"/>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>
...