DTD和schema语法的区别(一)

XML Schema定义详解
本文介绍了XML Schema的基本结构及其如何定义元素、类型等关键概念。详细解释了如何通过xsd:schema元素来指定根元素及命名空间,同时展示了如何定义简单类型、复合类型以及使用内嵌类型。此外,还介绍了如何实现DTD中元素的互斥与重复效果。
 

1.    DTD指定根元素的语法是<!DOCTYPE 根元素名[元素描述]>,而每个schema的根元素都是xsd:schema(其中xsd是别名,可任意定义),定义该元素时,还应该指定xsd命名空间对应的schema定义。因此,每个schema都有如上结构: f]ilTQ"G8e  
<?xml version="1.0" encoding="UTF-8"?> iEsF9  
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> nW|yGYC;  
…… m'7{o oO  
</xsd:schema> j=q@ Aa.  
2.    DTD定义子元素的语法是<!ELEMENT 元素名 元素类型描述>,这里的类型包括任意类型(ANY)、字符串值(#PCDATA)、空元素(EMPTY)、包含子元素、混合元素;schema定义子元素的语法是<xsd:element name=”…” 子元素类型>,但指定元素的子元素,则需使用元素引用语法:<xsd:element ref=”已有元素名” minOccurs="最小次数" maxOccurs="最大次数" >,其中后面两个属性值可以不指定,不指定的情况下默认必须使用一次; gZ,i_C8>P  
前面所指的定义子元素的语法中的指定子元素类型有两个方法,一是用type属性,二是用嵌套子元素的方法。现把schema指定类型的各种情况说明如下: u0qQ [jn{O  
a)    使用内嵌类型(共8个类型),如下例子: 3u`]41of!  
<xsd:element name="书名" type="xsd:string"/> Q|Qs/s..G  
b)    自定义简单类型(原有内建类型+额外约束),如下例子: 9zV1f4]Wd  
<xsd:simpleType name="price"> T^~b=;/  
    <xsd:restriction base="xsd:decimal"> ~_E3(NBE/  
        <xsd:fractionDigits value="2"/> "Y@T6I .  
        <xsd:minInclusive value="1.00"/> k| uBO<P  
        <xsd:maxInclusive value="300.00"/> :U uRjwT  
    </xsd:restriction> 7 Rg;w  
</xsd:simpleType> {0$: +{?  
c)    自定义复合类型,如下例子: Mo=tQ(0x  
<xsd:complexType name="book"> %%:B-Rei+  
    <xsd:sequence|all|choice> *y.#0]  
        <xsd:element ref="书名"/> q=KQb  
        <xsd:element ref="作者"/> M}R%$e  
        <xsd:element ref="出版社"/> KLhJN-<x?  
        <xsd:element ref="价格"/> W`TV TeZ/  
    </xsd:sequence> `frVCtnUt  
</xsd:complexType> (?Ke-K;  
d)    混合类型,则只要在<xsd:complexType>元素上添加mixed=”true”就行。 H0+_VeRO  
e)    在<xsd:complexType>元素内不提供xsd:choice|all|sequence任意一个子元素,即为空元素。 }+C`  
D#{N3a  
另:如果想在schema中实现DTD的既互斥又可无序地出现多次的效果,只需在配置类型的时候选择choice,并且把属性maxOccurs的值赋为unbounded就可以,如下例子所示: Z`ITmPLo  
    DTD:(A元素|B元素|C元素)* {8f>8gEhD  
    Schema:<xsd:complexType> ab(,@n  
                <xsd:choice maxOccurs="unbounded"> HZU6G[8  
                    <xsd:element ref="A元素"/> Y&+(& C  
                    <xsd:element ref="B元素"/> fNb{u"/[  
                    <xsd:element ref="C元素"/> Vg;F/n!D9  
                </xsd:choice> t,,eP`b^S  
            </xsd:complexType> #z[ .Cj~  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值