использованиев complexType схемы XML? - PullRequest
3 голосов
/ 30 сентября 2011

У меня определены следующие XML complexType s:

<xs:complexType name="loss">
    <xs:all>
        <xs:element name="lossCause" type="xs:string"/>
        <xs:element name="lossDate" type="xs:dateTime"/>
        <xs:element name="lossDescription" type="xs:string"/>
        <xs:element name="lossLocation" type="address" minOccurs="0"/>
        <xs:element name="lossTime" type="xs:string" minOccurs="0"/>
        <xs:element name="officials" minOccurs="0">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="official" type="official" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:all>
    <xs:attribute name="incidentOnly" type="xs:boolean" use="required"/>
    <xs:attribute name="lawsuit" type="xs:boolean" use="required"/>
</xs:complexType>

и:

<xs:complexType name="propLoss">
    <xs:complexContent>
        <xs:extension base="loss">
            <xs:all>
                <xs:element name="damageDescription" type="xs:string"/>
                <xs:element name="property" type="property"/>
                <xs:element name="responsibleParty" type="contact" minOccurs="0"/>
            </xs:all>
            <xs:attribute name="businessOperational" type="xs:boolean" use="required"/>
            <xs:attribute name="propertyLivable" type="xs:boolean" use="required"/>
            <xs:attribute name="weatherRelated" type="xs:boolean" use="required"/>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

Однако при проверке я получаю сообщение об ошибке, указывающее, что модель allгруппа не допускается ни в пределах определения loss complexType, ни в расширении propLoss.Что я делаю не так?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 30 сентября 2011

Проблема с propLoss заключается в том, что вы не можете расширить группу all в XML-схеме (1.0).Из спецификации:

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

Не уверен, в чем проблема с loss, если только это не сопутствующий ущерб из-за ошибки propLoss.

3 голосов
/ 21 августа 2012

Обратите внимание, что в XSD 1.1 all группы могут быть расширены, как показано здесь, в том смысле, что все дети, упомянутые в любой из all -групп, должны присутствовать в любом порядке.(То есть все группы 1 и все группы 2 объединяются в одну группу, объединяющую их детей.)

...