#XML之路#XSD——complexType

<?xml version="1.0"?>

<!-- journey.xsd -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.w3schools.com"

xmlns="http://www.w3schools.com"

elementFormDefault="qualified">
<xs:element name="product">

<xs:complexType>
<xs:sequence>

<xs:element name="unit_price">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="price_type">
<xs:attribute name="unit" type="weight" use="required"/>
<xs:attribute name="currency" type="currency_type" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

<xs:element name="amount">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="unit" type="weight" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

<xs:element name="quality">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="first class"/>
<xs:enumeration value="second class"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

<xs:element name="importer">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="id_type" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

</xs:sequence>
<xs:attribute name="id" type="product_id" use="required"/>
</xs:complexType>
</xs:element>

<xs:simpleType name="price_type">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="weight">
<xs:restriction base="xs:string">
<xs:enumeration value="kg"/>
<xs:enumeration value="liter"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="currency_type">
<xs:restriction base="xs:string">
<xs:enumeration value="euro"/>
<xs:enumeration value="dollar"/>
<xs:enumeration value="RMB"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="id_type">
<xs:restriction base="xs:ID">
<xs:pattern value="[A-Z][A-Z][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="product_id">
<xs:restriction base="xs:ID">
<xs:pattern value="[a-z][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>

<!--自己定义的属性类型在外面,元素的取值类型在元素里面-->
</xs:schema>

=====================================================================
调试一下午程序,发现问题出在complexType上面,

<xs:element name="amount">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="unit" type="weight" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

对于complexType下的simpleContent

可选项 — annotation

必选项 — 有并且只有一个下列元素: restriction (simpleContent) 或 extension (simpleContent)。

所以说,需要加一个extension base="xs:integer",而不是想当然的在element里面加type="xs:integer"。

======================================================================

XML文件

<?xml version="1.0"?>
    <product id="p100"

    xmlns="http://www.w3schools.com"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.w3schools.com product.xsd">

    <unit_price unit="kg" currency="euro">24.56</unit_price>

    <amount unit="kg">234</amount >

    <quality>first class</quality>

    <importer id="FI2000">Safe Food OY</importer>

    </product>

 

亲爱的小兔子,虽然你看不懂,还是谢谢你的观赏,哈哈~~~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值