문제

이런 XSD가 있습니다

<xsd:complexType name="A">  
        <xsd:complexContent>  
            <xsd:sequence>  
                <xsd:element name="options">  
                    <xsd:complexType>  
                        <xsd:sequence>  
                            <xsd:element name="Day">  
                            ...  
                            </xsd:element>  
                        </xsd:sequence>  
                    </xsd:complexType>  
                </xsd:element>  
            </xsd:sequence>  
        </xsd:complexContent>  
</xsd:complexType>  

<xsd:complexType name="B">  
    <xsd:complexContent>
        <xsd:extension base="A">
        ...What would go here...
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>  

따라서 기본적으로 클래스 A에 일련의 옵션 (예 : 주, 주)을 갖기를 원합니다. B에서 B를 상속 받고 A의 모든 옵션과 시간, 초와 같은 추가 2 또는 3 옵션을 갖기를 원합니다.

도움이 되었습니까?

해결책

다음은 제가 생각해 낸 스키마입니다.

<?xml version="1.0" encoding="utf-8"?>
<schema id="inheritance"
    targetNamespace="http://test.com"
    elementFormDefault="qualified"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:test="http://test.com"
>
    <element name="Time">
        <complexType>
            <sequence>
                <element name="First" type="test:A" />
                <element name="Second" type="test:B" />
            </sequence>
        </complexType>
    </element>

    <complexType name="shortOptions">
        <sequence>
            <element name="Day" />
        </sequence>
    </complexType>

    <complexType name="longOptions">
        <complexContent>
            <extension base="test:shortOptions">
                <sequence>
                    <element name="Week" />
                </sequence>
            </extension>
        </complexContent>
    </complexType>

    <complexType name="A">
        <sequence>
            <element name="options" type="test:shortOptions" />
        </sequence>
    </complexType>

    <complexType name="B">
        <sequence>
            <element name="options" type="test:longOptions" />
        </sequence>
    </complexType>

</schema>

이 XML에 맞는 것 같습니다.

<?xml version="1.0" encoding="utf-8" ?>
<Time xmlns="http://test.com">
    <First>
        <options>
            <Day>Today</Day>
        </options>
    </First>
    <Second>
        <options>
            <Day>Tomorrow</Day>
            <Week>This Week</Week>
        </options>
    </Second>
</Time>

다른 팁

단순히 추가하십시오 <xsd:sequence> 필요한 요소로 :

<xsd:complexType name="B">  
    <xsd:complexContent>
        <xsd:extension base="A">
           <xsd:sequence>
              <xsd:element name="Hours">
              ...
              </xsd:element>
           </xsd:sequence>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

옵션을 복잡한 유형의 IT 유형으로 정의 한 다음이를 확장하여 새로운 옵션 복잡한 유형을 만들고 확장 대신 대체를 사용해야합니다.

시간 등이 포함 된 옵션 유형을 만들고 CSGERO의 답변에서 시간 대신 옵션을 추가해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top