목표 :XSD에서 XSD를 사용할 수 있습니까? type 속성을 요구하도록 xs : complexType 요소를 다시 정의 하시겠습니까?
가 강제로 다른 스키마에서 재정의 http://www.w3.org/2001/XMLSchema
을 다시 사용할 수 스키마에 정의 된 요소 :
는 "형식"속성이 모든 XS 필요 XSD 만들기 정의 된 모든 XS : 요소 (들) (XMLSPY에서 예를 들어) 우리의 XSD에서 "유효하지 않습니다"로 다음 "유형"속성을
예를 들어, 내가 좋아하는 것이 필요합니다
<xs:element name="SomeElement"/>
다음 여기
<xs:element name="SomeElement" type="abc:SomeType"/>
유효 할 것입니다 반면에 내가 "유형"속성을 요구하도록 <xs:complexType name="element">
를 재정의하려고했습니다 스키마의 예입니다. "텍스트"보기에서
및 저장하려고, XMLSPY : 이제
<?xml version="1.0"?> <!-- edited with XMLSpy v2013 (http://www.altova.com) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:redefine schemaLocation="http://www.w3.org/2001/XMLSchema.xsd"> <xs:complexType name="element" abstract="true"> <xs:complexContent> <xs:restriction base="xs:element"> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:QName"/> </xs:simpleType> </xs:attribute> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="topLevelElement"> <xs:complexContent> <xs:restriction base="xs:topLevelElement"/> </xs:complexContent> </xs:complexType> <xs:complexType name="localElement"> <xs:complexContent> <xs:restriction base="xs:localElement"/> </xs:complexContent> </xs:complexType> <xs:complexType name="narrowMaxMin"> <xs:complexContent> <xs:restriction base="xs:narrowMaxMin"/> </xs:complexContent> </xs:complexType> </xs:redefine> <xs:element name="SomeElement"/> </xs:schema>
,이 스키마의 몇 가지 흥미로운 측면, 그리고 XMLSPY 2013 (서비스 팩이) 몇 가지 이상한 행동이있다 C에 대한 스키마가
- "스키마"보기에서
및 저장하려고 "유효하지"을 나타냅니다, XMLSPY가 표시 스키마가 유효
시도 XMLSpy에서 샘플 XML 파일을 다시 작성하면 스키마가 유효하지 않음을 나타내는 오류가 발생합니다.
유효하지 않아야하는 스키마의 유일한 부분은
<xs:element name="SomeElement">
이며 "유형"속성으로 정의되지 않았기 때문에<xs:element name="SomeElement">
입니다.발생하는 오류는 중복 된 선언과 관련이 있습니다. 그러나 시도되는 것은 다른 선언보다는 재정의 것이다.
질문 :
- IT는 "유형"속성을 필요로
<xs:complexType name="element">
을 다시 정의 할 수 있습니까? - 다른 "targetNamespace"를 가진 다른 XSD에서이 재정의 된 유형을 사용할 수 있습니까?