나는 다음과 같은 XSD 스키마가 : 스키마에서 볼 수 있듯이Restict의 XML 요소
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Vehicle">
<xs:sequence>
<xs:element name="numberOfWheels" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="car" type="Car"/>
<xs:complexType name="Car">
<xs:complexContent>
<xs:extension base="Vehicle">
<xs:sequence>
<xs:element name="numberOfSeats" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="motorCycle" type="MotorCycle"/>
<xs:complexType name="MotorCycle">
<xs:complexContent>
<xs:extension base="Vehicle">
<xs:sequence>
<xs:element name="hasLuggageCompartment" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="wagon" type="Wagon"/>
<xs:complexType name="Wagon">
<xs:complexContent>
<xs:extension base="Vehicle">
<xs:sequence>
<xs:element name="typeOfCargo" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="vehicleList" type="VehicleList"/>
<xs:complexType name="VehicleList">
<xs:sequence>
<xs:element <!-- what to do here? --> minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
, 우리는 유형 "자동차", "오토바이"와 "왜건"그들 모두가를 "Vehicle"유형을 확장했습니다.
"Car", "MororCycle"유형의 요소를 저장할 수 있도록 "Vehicle"을 확장하는 한 모든 요소를 저장할 수있는 컨테이너 요소를 내 스키마 (VehicleList)에 소개하고자합니다. 또는 "Wagon"을 포함하지만, "Cow"유형의 요소는 "Animal"유형을 확장 할 수 없기 때문에 이러한 요소가 없습니다.
나는 이미 많이 검색했기 때문에 OO 프로그래밍에서 자주 사용되는 것처럼 "조상"유형을 기반으로 XML 스키마에서 이러한 종류의 제한을 도입 할 수 있다고 생각하지 않습니다.
그래서 내 질문 : 그것은 확장 유형에 따라 포함 된 요소를 제한하는 컨테이너 요소를 선언 할 수 있으며, 그렇다면 어떻게됩니까?
답변과 제안에 미리 감사드립니다. 복합 유형 및 XSI 사용
원하는 XSD로 검증해야하는 XML 문서를 우리와 공유 할 수 있습니까? – DMC19