混合コンテンツを含むXML要素を検証する方法は?要素には、文字列「Undefined」またはfloat値を含めることができます。パターン付きの文字列制限を介して実行できると思いますが、もっと良い方法が存在する可能性がありますか?
1 に答える
0
を使用してUnion要素によって解決されました。
以下の例を検討してください。サンプルXMLはカレンダーの日付を定義します。
<Calender>
<Date>
<Date>01</Date>
<Month>Jan</Month>
<Year>2013</Year>
</Date>
<Date>
<Date>31</Date>
<Month>01</Month>
<Year>2013</Year>
</Date>
</Calender>
Month要素にはIntとStringの両方のタイプがあるため、次のように解決できます。XSDの記述方法:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Calender" type="Calender"/>
<xs:complexType name="Calender">
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Date" type="Date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Date">
<xs:sequence>
<xs:element name="Date" type="xs:unsignedByte" />
<xs:element name="Month" type="Month" />
<xs:element name="Year" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Month">
<xs:union memberTypes="MonthNum MonthVal" />
</xs:simpleType>
<xs:simpleType name="MonthNum">
<xs:restriction base="xs:int">
<xs:minInclusive value="01"/>
<xs:maxInclusive value="31"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MonthVal">
<xs:restriction base="xs:string">
<xs:enumeration value="Jan"/>
<xs:enumeration value="Feb"/>
<xs:enumeration value="Mar"/>
<xs:enumeration value="Dec"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
于 2011-10-06T09:18:52.223 に答える