旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

细致引见XML DTD于XML Schema进修的示例代码(图文)【XML教程】,XML ,DTD,Schema

作者:搜教程发布时间:2019-11-27分类:XML教程浏览:109评论:0


导读:  XML(eXtensibleMarkupLanguage)可扩大的标记言语。xml在webservice编程中尤为主要。在收集传输中可以作为传输数据的载体。xml作为...
  XML(eXtensible Markup Language)可扩大的标记言语。xml在web service编程中尤为主要。在收集传输中可以作为 传输数据的载体。xml作为 元言语,它可以用来标记数据、定义数据范例,是一种许可用户对自身的标记言语举行定义的元言语。 它异常合适收集传输,供应一致的方法来形貌和交流独立于运用程序或供应商的构造化数据。可以完成异构言语、异构平台之间的交互。XML 文档定义体式格局有:文档范例定义(DTD)和XML Schema。DTD(Document Type Definition)定义了文档的团体构造以及文档的语法(下面会有响应的例子用于明白)运用普遍并有雄厚的东西支撑。XML Schema的功用更壮大,用于定义治理信息等更壮大、更雄厚的特性。XML可以更细粒度地声明内容,定义束缚,轻易逾越多种平台的更有意义的传输内容。它供应了一种形貌构造数据的花样,简化了收集中数据交流和示意,使得代码、数据和示意星散,并作为数据交流的规范花样,因而它常被称为智能数据文档。可以把DTD比作铁铲,而XML Schema就可以说是挖掘机,功用更壮大。  XML虽然称作标记言语,但与HTML(超文本标记言语)差别,它的花样更严厉,标签必需关闭,显现与内容星散,XML形貌的是文档的内容与语义而不是文档该怎样显现。HTML有牢固的标签,显现跟内容是一同的,不能建立自身的标签,而XML是可扩大的,内容与显现星散,每一个元素都成对涌现,又最先就有完毕,而且XML元素的嵌套关联要坚持准确(嵌套中后最先的标纪要先完毕,先最先的标纪要后完毕),每一个XML文档中只要一个根元素(Root Element),根元素包含了其他一切的元素。 相符XML语法的XML文档在未被DTD或XML Schema考证时叫做良构(well form)的,假如良构的xml文档被DTD或XML Schema考证,这类xml文档称为有用(Valid)的。

下面以一个门生名册的xml作为例子

<?xml version="1.0" encoding="utf-8"?>
<门生名册>
    <门生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <岁数>22</岁数>
    </门生>

    <门生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <岁数>23</岁数>
    </门生>
</门生名册>

花样优越的xml文档,XMLSpy的输出窗口会输出以下效果

xml的首行肯定如果<?xml version="1.0"?>处置惩罚指令,且”<?xml”之间不能有空缺,xml元素严厉辨别大小写,文档编码花样默以为“UTF-8”,版本只要1.0。上面的xml文档只能说是花样优越的xml文档,不能说是有用的(Vaild)xml文档。下面我们用两种体式格局去考证它。

首先是经由过程DTD来对它举行考证

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 门生名册 [
<!ELEMENT 门生名册 (门生+)>
<!ELEMENT 门生 (名字,性别,岁数)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 岁数 (#PCDATA)>
<!ATTLIST 门生 学号 ID #REQUIRED>
<!ENTITY  sex "男">
]>

<门生名册>
    <门生 学号="A1">
        <名字>CIACs</名字>
        <性别>&sex;</性别>
        <岁数>22</岁数>
    </门生>
    
    <门生 学号="A2">
        <名字>zhihao</名字>
        <性别>&sex;</性别>
        <岁数>23</岁数>
    </门生>
</门生名册>

假如考证经由过程的话,XMLSpy输出窗口会有以下的效果显现

不然就算是多了一个空格都不会经由过程考证。这里我把dtd的考证写到了xml中,固然你也可以把它写到另一个文件中,该文件的后缀名为“.dtd”,然后把它关联到要考证的xml文档中,语法以下

1 <!DOCTYPE 根元素名 SYSTEM "*.dtd">

此处ID值彷佛要以字符开首,假如只是数字通不过考证。

门生信息中的性别,我把它定义为实体,然后经由过程实体援用它的值,要注意实体援用的语法是"&实体名;"。

下面经由过程XML Schema体式格局来考证

要考证的xml文档

<?xml version="1.0" encoding="utf-8"?>
<门生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="门生名册.xsd">
    <门生 学号="A1">
        <姓名>CIACs</姓名>
        <性别>男</性别>
        <岁数>22</岁数>
    </门生>

    <门生 学号="A2">
        <姓名>zhihao</姓名>
        <性别>男</性别>
        <岁数>23</岁数>
    </门生>
</门生名册>

XML Schema考证文档

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="门生名册">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
                <xs:element ref="门生"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="门生">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="姓名" type="xs:string"/>
                <xs:element name="性别">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="男"/>
                            <xs:enumeration value="女"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="岁数">
                    <xs:simpleType>
                        <xs:restriction base="xs:integer">
                            <xs:minExclusive value="0"/>
                            <xs:maxExclusive value="120"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="学号" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

XMLSpy输出窗口的输出效果

要考证的xml的文档经由过程在根元素最先标签中到场下面的信息关联XML Schema文档

 1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="门生名册.xsd"

以上的文档都是放在统一途径下的,所以直接援用文件名就好了。

从上面的两种考证体式格局我们可以很清晰的看出DTD跟XML Schema考证的区分,二者同样是举行xml文档考证的,XML Schema供应了比DTD更加壮大的功用和更细粒度的数据范例,而且Schema还可以自定义数据范例,其自身就是xml文件,但dtd的语法跟xml的语法差别。虽然从代码量来看Schema大于dtd,然则当你学过Schema后你就会更喜好用Schema。

学好xml和它的考证体式格局,关于背面进修web service编程很主要。

以上就是细致引见XML DTD于XML Schema进修的示例代码(图文)的细致内容,更多请关注ki4网别的相干文章!

标签:XMLDTDSchema


欢迎 发表评论: