반응형
단순 유형에 속성 추가 또는 XML 스키마의 복합 유형에 제한
문제는 다음과 같습니다.
다음 XML 스 니펫이 있습니다.
<time format="minutes">11:60</time>
문제는 속성과 제한을 동시에 추가 할 수 없다는 것입니다. 속성 형식은 분, 시간 및 초 값만 가질 수 있습니다. 시간에는 제한 패턴이 있습니다\d{2}:\d{2}
<xs:element name="time" type="timeType"/>
...
<xs:simpleType name="formatType">
<xs:restriction base="xs:string">
<xs:enumeration value="minutes"/>
<xs:enumeration value="hours"/>
<xs:enumeration value="seconds"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="timeType">
<xs:attribute name="format">
<xs:simpleType>
<xs:restriction base="formatType"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
복잡한 유형의 timeType을 만들면 속성을 추가 할 수 있지만 제한은 추가 할 수 없으며 단순 유형을 만들면 제한을 추가 할 수 있지만 속성은 추가 할 수 없습니다. 이 문제를 해결할 방법이 있습니까? 이것은 매우 이상한 제한이 아닙니다.
속성을 추가하려면 확장으로 파생해야하고 패싯을 추가하려면 제한으로 파생해야합니다. 따라서 이것은 요소의 자식 콘텐츠에 대해 두 단계로 수행되어야합니다. 속성은 인라인으로 정의 할 수 있습니다.
<xsd:simpleType name="timeValueType">
<xsd:restriction base="xsd:token">
<xsd:pattern value="\d{2}:\d{2}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="timeType">
<xsd:simpleContent>
<xsd:extension base="timeValueType">
<xsd:attribute name="format">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="seconds"/>
<xsd:enumeration value="minutes"/>
<xsd:enumeration value="hours"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
속성을 추가하는 동안 상속 된 유형을 제한과 혼합하는 데 실제로 필요한 사항에 대해 더 자세한 설명과 함께 내 예제를 제안하고 싶습니다.
이것은 상속 된 유형을 정의하는 장소입니다 (제 경우에는 필드 길이 1024 제한이 적용된 xs : string 기반의 것입니다). 필드에 "속성"도 추가 할 것이므로 필드의 표준 유형으로 사용할 수 없습니다.
<xs:simpleType name="string1024Type">
<xs:restriction base="xs:string">
<xs:maxLength value="1024"/>
</xs:restriction>
</xs:simpleType>
이것은 개인 유형 (제 경우에는 "string1024Type")을 기반으로 요소가 정의되고 필요한 속성이 추가 된 위치입니다.
<xs:element maxOccurs="unbounded" name="event">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="string1024Type">
<xs:attribute default="list" name="node" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
두 블록 모두 스키마에서 완전히 분리 된 위치에있을 수 있습니다. 중요한 점은 다시 한 번만 따라가는 것입니다. 동일한 요소 정의에서 상속과 속성을 혼합 할 수 없습니다.
반응형
'IT TIP' 카테고리의 다른 글
pip 캐시 폴더는 어디에 있습니까? (0) | 2020.11.20 |
---|---|
Python의 클래스 팩토리 (0) | 2020.11.20 |
.NET 콘솔 응용 프로그램 종료 이벤트 (0) | 2020.11.20 |
'실시간'프로세스 우선 순위 설정은 무엇입니까? (0) | 2020.11.20 |
기존 검사 제약을 수정하는 방법은 무엇입니까? (0) | 2020.11.20 |