天天看点

XML总结一、简介二、语法三、DTD四、Schema五、常见XML文件头

文章目录

  • 一、简介
  • 二、语法
  • 三、DTD
    • 1.简介
    • 2.语法
  • 四、Schema
    • 1.简介
    • 2.语法
  • 五、常见XML文件头

一、简介

XML指可扩展标记语言(EXtensible Markup Language),设计宗旨是传输和存储数据,没有预定义标签。

二、语法

所有XML元素都必须有关闭标签;

XML标签对大小写敏感;

XML文档必须有根元素(根元素是所有其他元素的父元素);

XML的属性值必须加上引号;

注意实体引用

XML总结一、简介二、语法三、DTD四、Schema五、常见XML文件头

三、DTD

1.简介

DTD全称文档类型定义(Documnet Type Definition),用来定义合法的XML文档的结构,可以在XML文档中声明,也可以在外部声明,在XML中引用。

<!-- 内部声明 -->
<!DOCTYPE 根元素 [元素声明]>

<!-- 外部声明 -->
<!DOCTYPE 根元素 SYSTEM "URL">	<!-- 私有DTD -->
<!DOCTYPE 根元素 PUBLIC "公共名称" "URL">	<!-- 公共DTD -->
<!-- 
公共名称格式 "注册//组织//类型 标签//语言"
注册指组织是否由国际化标准组织(ISO)注册,+代表是,-代表不是;
组织指组织的名称;
类型一般是DTD;
标签指公开文本的唯一性描述,可附带版本号;
语言指语言标识符,EN代表英文,ZN代表中文。
-->

           

2.语法

声明元素

<!-- 声明一个元素 -->
<!ELEMENT 元素名称 类别>
<!-- 或者 -->
<!ELEMENT 元素名称 (元素内容)>

<!-- 空元素 -->
<!ELEMENT 元素名称 EMPTY>	<!-- <!ELEMENT br EMPTY> <br /> -->

<!-- 只有PCDATA的元素 -->
<!ELEMENT 元素名称 (#PCDATA)>

<!-- 带有任何类型的元素 -->
<!ELEMENT 元素名称 ANY)>

<!-- 带有子元素的元素 -->
<!ELEMENT 元素名称 (子元素1,子元素2,子元素3))>	<!-- 子元素必须按照相应的顺序出现在文档中,而且子元素也必须声明 -->

<!-- 声明只出现一次的元素 -->
<!ELEMENT 元素名称 (子元素))>

<!-- 声明最少出现一次的元素 -->
<!ELEMENT 元素名称 (子元素+))>

<!-- 声明出现零次或多次的元素 -->
<!ELEMENT 元素名称 (子元素*))>

<!-- 声明出现零次或一次的元素 -->
<!ELEMENT 元素名称 (子元素?))>
           

声明属性

<!ATTLIST 元素名称 属性名称 属性类型 默认值>
<!-- <!ATTLIST payment type CDATA "check"> -->
<!-- <payment type="check" /> -->
           
XML总结一、简介二、语法三、DTD四、Schema五、常见XML文件头

声明实体

<!-- 内部实体声明 -->
<!ENTITY 实体名称 "实体值">
<!-- <!ENTITY writer "Bill Gates"> -->
<!-- <author>&writer;</author> -->
<!-- 一个实体由 & 实体名称 ; 组成  -->

<!-- 外部实体声明 -->
<!ENTITY 实体名称 SYSTEM "URL">
<!-- <!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"> -->
<!-- <author>&writer;</author> -->
           

四、Schema

1.简介

XML Schema是DTD的继承者,支持数据类型,支持命名空间,使用XML语法。

2.语法

schema元素是每一个XML Schema元素的根元素

<?xml version="1.0"?>
 
<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:schema>
<!--
xmlns:xs="xxx"代表使用的元素和数据类型所使用的命名空间,以及来自该命名空间的元素和数据类型必须使用的前缀xs;
targetNamespace="xxx"代表该文件定义的元素的命名空间;
xmlns="xxx"代表默认的命名空间;
elementFormDefault="xxx"代表默认的元素命名空间的格式
-->
           

简单类型

<!-- 定义简易元素(只包含文本,不会包含任何其他元素或者属性) -->
<xs:element name="xxx" type="yyy" />
<!--
数据类型有
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
-->
<!-- 简易元素的默认值 -->
<xs:element name="xxx" type="yyy" default="zzz" />
<!-- 简易元素的固定值 -->
<xs:element name="xxx" type="yyy" fixed="zzz" />

<!-- 定义属性 -->
<xs:attribute name="xxx" type="yyy" />
<!-- 属性的默认值 -->
<xs:attribute name="xxx" type="yyy" default="zzz" />
<!-- 属性的固定值 -->
<xs:attribute name="xxx" type="yyy" fixed="zzz" />
<!-- 默认属性可选,可设置属性必选 -->
<xs:attribute name="xxx" type="yyy" use="required" />

<!-- 声明限定,在元素或属性中引用 -->
<xs:element name="zzz" type="xxx" />
<xs:simpleType name="xxx">
  <xs:restriction base="yyy">
    ...
  </xs:restriction>
</xs:simpleType>
<!-- 在声明元素或者属性里声明限定 -->
<xs:element name="xxx">
  <xs:simpleType>
    <xs:restriction base="yyy">
      ...
    </xs:restriction>
  </xs:simpleType>
</xs:element>
           
XML总结一、简介二、语法三、DTD四、Schema五、常见XML文件头

复杂的类型

复合元素指包含其他元素或属性的元素。

<!-- 嵌套声明 -->
<xs:element name="xxx">
  <xs:complexType>
    ...
  </xs:complexType>
</xs:element>
<!-- 通过引用声明 -->
<xs:element name="xxx" type="yyy" />
<xs:complexType name="yyy">
  ...
</xs:complexType>

<!--
指示器
Order指示器(用于定义元素的顺序)
- All(子元素可按照任意顺序出现,且每个子元素必须最多出现一次)
- Sequence(子元素必须按照顺序出现)
- Choice(子元素只可出现其中一个)
Occurrence指示器(用于定义元素出现的频率,默认值均为1)
- maxOccurs(元素出现的最大次数)
- minOccurs(元素出现的最小次数)
Group指示器(用于定于元素组或属性组)
- Group name
- attributeGroup name
-->

<!--
any元素,可以匹配任何已声明的元素;
anyAttribute,可以匹配任何已声明的属性
-->

<!--
元素替换
substitutionGroup可替换主元素name
-->

           

五、常见XML文件头

Mybatis generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">