XML语义约束之DTD与XML Schema

优质文章推荐,适合零基础小白XML入门(从是什么到怎么用)

DTD

DTD(Document Type Definition,文档类型定义)是一种简单易用的语义约束方式.
DTD文件的扩展名为.dtd

DTD定义节点

  • 利用DTD中的标签,我们可以定义XML文档中允许出现的节点及数量

<!ELEMENT hr (employee)>


<!ELEMENT employee (name,age,salary,department)>


<!ELEMENT name (#PCDATA)>

DTD定义节点数量

  • 如某个子节点需要多次重复出现,则需要在子节点后增加相应的描述符

<!ELEMENT hr (employee+)>


<!ELEMENT hr (employee*)>


<!ELEMENT hr (employee?)>

XML引用DTD文件

  • 在XML中使用标签来引用DTD文件
    书写格式:

创建并使用DTD文件

现在有一个.xml文件,要创建.dtd文件并且添加约束




<hr>
    <employee no="1111">
        <name>张三name>
        <age>18age>
        <salary>4000salary>
        <department>
            <dname>会计部dname>
            <address>XX大厦address>
        department>
    employee>

hr>

创建一个.dtd文件(IDEA如何创建.dtd文件可以参考 IDEA如何创建.dtd文件)


<!ELEMENT hr (employee+)> 
<!ELEMENT employee (name,age,salary,department)> 
<!ATTLIST employee no CDATA ""> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT employee.department (dname,address)> 
<!ELEMENT department (#PCDATA)>
<!ELEMENT dname (#PCDATA)>
<!ELEMENT address (#PCDATA)>

XML Schema

  • XML Schema 比 DTD更为复杂,提供了更多功能
  • XML Schema 提供了数据类型,格式限定,数据范围等特性
  • XML Schema 是W3C标准
    (IDEA如何创建XML Schema文件可以参考 IDEA如何创建XML Schema文件)
    如何使用在代码中体现:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3school.com.cn"
           xmlns="http://www.w3school.com.cn"
           elementFormDefault="qualified">
    <xs:element name="hr">
        
        <xs:complexType>
            <xs:sequence>
                <xs:element name="employee" minOccurs="1" maxOccurs="999">
                    
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string">xs:element> 
                            <xs:element name="age">
                                <xs:simpleType> 
                                    <xs:restriction base="xs:integer">
                                        <xs:minInclusive value="18">xs:minInclusive>
                                        <xs:maxInclusive value="60">xs:maxInclusive>
                                        
                                    xs:restriction>
                                xs:simpleType>
                            xs:element>

                            <xs:element name="salary" type="xs:integer">xs:element>
                            <xs:element name="department">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="dname" type="xs:string">xs:element>
                                        <xs:element name="address" type="xs:string">xs:element>
                                    xs:sequence>
                                xs:complexType>
                            xs:element>
                        xs:sequence>
                        <xs:attribute name="no" type="xs:string" use="required">xs:attribute>
                        
                    xs:complexType>
                xs:element>
            xs:sequence>
        xs:complexType>
    xs:element>
xs:schema>

示例所用xml代码:



<hr xmlns="http://www.w3school.com.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="hr.xsd">
    
    <employee no="1111">
        <name>张三name>
        <age>19age>
        <salary>4000salary>
        <department>
            <dname>会计部dname>
            <address>XX大厦address>
        department>
    employee>
hr>

本文若有错误,请各位大佬指正,我会尽快修改
最好的关系就是互相成就,您的三连是我最大的动力,谢谢大家

你可能感兴趣的:(JavaWeb入门,java,xml,html)