Schema文件初探(几个重要的元素和属性)

一、Schema文件的部分元素及属性说明:

1targetNamespace

可以使用targetNamespace 属性将默认命名空间中的元素和属性放入不同的命名空间。还可以指定在显示局部声明的架构元素和属性时,是否应由命名空间限定(使用前缀显式限定或默认隐式限定)。

2elementFormDefault(同样的还有attributeFormDefault

MSDNelementFormDefault 属性的解释:

在该架构的目标命名空间中声明的元素的形式。该值必须是下列字符串之一:qualified unqualified。默认值为 unqualified

如果该值是 unqualified,则无须通过命名空间前缀限定目标命名空间的元素。

如果该值是 qualified,则必须通过命名空间前缀限定目标命名空间的元素。

具体的可以参考下面的贴子:

http://www.xml.org.cn/dispbbs.asp?BoardID=23&id=25672&replyID=17053&star=1&skin=0

3import

将其他的Schema文件包含进来。其中,schemaLocation要素指明文件相对路径,namespace要素指明目标命名空间。

 

二、编码建议示例:

 

Xsd_1.xsd

 

<?xml version="1.0" encoding="UTF-8"?>

 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

    targetNamespace="http://www.temp.com/XSD_1"

    xmlns:xsd1="http://www.temp.com/XSD_1"

    xmlns:xsd2="http://www.temp.com/XSD_2"

    elementFormDefault="qualified">

    <xs:import

        namespace="http://www.temp.com/XSD_2"

        schemaLocation="xsd_2.xsd" />

    <xs:element name="child">

        <xs:complexType>

            <xs:sequence>

                <xs:element ref="xsd1:child" />

                <xs:element ref="xsd1:Field" />

                <xs:element ref="xsd1:Value" />

                <xs:element ref="xsd2:Field" />

            </xs:sequence>

        </xs:complexType>

    </xs:element>

    <xs:element name="Field">

        <xs:simpleType>

            <xs:restriction base="xs:string">

                <xs:enumeration value="Beautal" />

            </xs:restriction>

        </xs:simpleType>

    </xs:element>

    <xs:element name="Value">

        <xs:simpleType>

            <xs:restriction base="xs:string">

                <xs:enumeration value="JD 000000" />

            </xs:restriction>

        </xs:simpleType>

    </xs:element>

</xs:schema>

 

Xsd_2.xsd:

 

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

    targetNamespace="http://www.temp.com/XSD_2"

    xmlns="http://www.temp.com/XSD_2"

    elementFormDefault="qualified">

    <xs:element name="Field">

        <xs:complexType>

            <xs:sequence>

                <xs:element ref="Value" />

            </xs:sequence>

        </xs:complexType>

    </xs:element>

    <xs:element name="Value">

        <xs:simpleType>

            <xs:restriction base="xs:string">

                <xs:enumeration value="CU 0101757" />

            </xs:restriction>

        </xs:simpleType>

    </xs:element>

</xs:schema>

 

三、总结

Schema文件编写中,建议使用目标命名空间,即targetNamespace 。如:在xsd_2.xsd中,可以在“xs:schema”节点中这样写:

targetNamespace="http://www.temp.com/XSD_2"

之后在xsd_1.xsd文件中引用xsd_2.xsd文件的时候,可以这样写:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

    targetNamespace="http://www.temp.com/XSD_1"

    xmlns:xsd1="http://www.temp.com/XSD_1"

    xmlns:xsd2="http://www.temp.com/XSD_2"

    elementFormDefault="qualified">

    <xs:import namespace="http://www.temp.com/XSD_2" schemaLocation="xsd_2.xsd" />

    ……

</xs:schema>

其中,xmlns:xsd2="http://www.temp.com/XSD_2"表示引用xsd_2.xsd中的命名空间,同时需要注意的是必须使用<xs:import />标签将xsd_2.xsd文件导入。

另外,为了方便的使用所有的命名空间,建议为每个引用的命名空间赋给一个唯一的前缀,如上xmlns:xsd2="http://www.temp.com/XSD_2"的“xsd2”, xmlns:xsd1="http://www.temp.com/XSD_1"中的“xsd1”。这样,在引用其中的元素的时候可以这样调用:

……

<xs:element ref="xsd1:child" />

<xs:element ref="xsd1:Field" />

    <xs:element ref="xsd1:Value" />

    <xs:element ref="xsd2:Field" />

……

由于使用了命名空间,建议将elementFormDefault设为"qualified",原因参考元素介绍。

 

 

附件为两个xsd文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值