이것은 stackoverflow에 대한 나의 첫 번째 질문입니다. (저는 이미 여기에있는 대답으로 내 문제를 파악할 수있었습니다).XSD 복잡한 열거 형
이 이러한 질문과 유사하지만, 내 질문은 조금 다른 생각 (또한, XSD 정말 어렵습니다) : 내가하려고
매개 변수 데이터 유형을 나타내는 "유형"의 제한된 세트를 정의하십시오. 예 : 그건, 그래서 만약 속성 :
<xs:complexType name="parameterDataType" abstract="true">
<xs:sequence>
<xs:element name="type" type="xs:string" />
<xs:element name="abbreviation" type="xs:string" />
<xs:element name="length" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="binaryBitMappedType">
<xs:complexContent>
<xs:restriction base="parameterDataType">
<xs:sequence>
<xs:element name="type" type="xs:string" fixed="Binary Bit-Mapped" />
<xs:element name="abbreviation" type="xs:string" fixed="B/BM" />
<xs:element name="length" type="xs:positiveInteger" fixed="1" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
etc...
참고 잘 :
- Binary bit-mapped B/BM 1 byte
- Unsigned Integer U/I 2 bytes
- Alphanumeric ALPHA 1 byte
- etc...
그래서 나는 다음과 같은 XSD와 함께 올라와있다 또한 시퀀스와 "형, 약어, 길이"인 XS와 함께이 시도 더 나은 해결책은 저에게 알려줍니다.
이 잘 작동하지만 그들의 제한 값 (그렇지 않으면 유효하지 않습니다)로 요소를 다시 정의하기 위해 XML을 필요로하므로 같은 비트 :
<message>
<id>123</id>
<name>Some status type message</name>
<dataType xsi:type="binaryBitMappedType">
<type>Binary Bit-Mapped</type>
<abbreviation>B/BM</abbreviation>
<length>1</length>
</dataType>
...etc
</message>
<message>
<id>321</id>
<name>A DIFFERENT status type message</name>
<dataType xsi:type="binaryBitMappedType">
<type>Binary Bit-Mapped</type>
<abbreviation>B/BM</abbreviation>
<length>1</length>
</dataType>
...etc
</message>
<message>
<id>456</id>
<name>a continuous value type message</name>
<dataType xsi:type="unsignedIntegerType">
<type>Unsigned Integer</type>
<abbreviation>U/I</abbreviation>
<length>2</length>
</dataType>
...etc
</message>
다음을 다시 정의 할 필요가 없도록하는 방법이 있나요 XML의 값 (정의는 XSD에서 가져 오거나 XSD에서 가져올 수 있습니까?) 또는 XML 파일에 정의를 제공 한 다음 xsi : type을 기준으로 "가져 오기"할 수 있습니까?
더 자세히 설명해주세요.
<message>
<id>123</id>
<name>Some status type message</name>
<dataType xsi:type="binaryBitMappedType" /> <!-- don't have to repeat the dataType contents -->
...etc
</message>
<message>
<id>321</id>
<name>A DIFFERENT status type message</name>
<dataType xsi:type="binaryBitMappedType" /> <!-- don't have to repeat the dataType contents -->
...etc
</message>
아니면 아무것도 숨기고 있습니까? 미리 감사드립니다.
안녕하세요, 답변 해 주셔서 감사합니다. 나는 어설 션에 대해 몰랐고, 그들은이 문제의 일부를 풀 수도있는 것처럼 보였다. 반복을 피하려고하는 부분을 설명하기 위해 약간의 질문을 확장했습니다. – Doddie