1
我試圖擴展複雜類型來改變其價值的minOccurs,我嘗試不同的東西沒有成功,這是我的基本類型:XSD擴展類型更改屬性值
<xs:complexType name="PhoneNumberType">
<xs:sequence>
<xs:element name="AreaCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:maxLength value="3" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LocalNumber">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:minLength value="7" />
<xs:maxLength value="17" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Extension" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
首先我想這使AREACODE optionnal特定情況:
<xs:element name="PhoneNumberWithOptionalAreaCode">
<xs:complexType>
<xs:complexContent>
<xs:extension base="PhoneNumberType">
<xs:sequence>
<xs:element name="AreaCode" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
它給了我一個錯誤,指出有相同名稱的元素應該有相同的類型。
所以,我想這一點:
<xs:complexType name="PhoneNumberType">
<xs:sequence>
<xs:element name="AreaCode" type="AreaCodeType" />
<xs:element name="LocalNumber">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:minLength value="7" />
<xs:maxLength value="17" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Extension" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AreaCodeType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]+" />
<xs:maxLength value="3" />
</xs:restriction>
</xs:simpleType>
<xs:element name="PhoneNumberWithOptionalAreaCode">
<xs:complexType>
<xs:complexContent>
<xs:extension base="PhoneNumberType">
<xs:sequence>
<xs:element name="AreaCode" type="AreaCodeType" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
現在XSD是有效的,但是當我嘗試驗證以下XML它說,預計不會LocalNumber,預計AREACODE。
<PhoneNumberWithOptionalAreaCode>
<LocalNumber>1234567</LocalNumber>
</PhoneNumberWithOptionalAreaCode>
任何人都可以幫忙嗎?
謝謝!