美文网首页
XML快速入门

XML快速入门

作者: 钟离惜 | 来源:发表于2021-01-11 22:44 被阅读0次

一、XML简介

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义,需要自行定义标签
XML 被设计为具有自我描述性
XML 是 W3C 的推荐标准
版本:XML 1.0,XML 1.1,目前常用 XML 1.0,因为 XML 1.1 不能向下兼容

XML 和 HTML 的差异

XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。

XML示例

<?xml version="1.0" encoding="gbk"?>
<note>
<to date="08/08/2008">George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

二、XML语法

1)所有 XML 元素都须有关闭标签
2)XML 标签对大小写敏感
3)XML 必须正确地嵌套
4)XML 文档必须有根元素(如上示例中的note标签)
5)XML 的属性值须加引号(如上示例中的data属性)
6)在 XML 中,空格会被保留(HTML只会保留一个空格)
7)XML 以 LF 存储换行
8)文档声明必须作为文件第一行(XML1.0中可以没有申明,XML1.1中必须有)
9)注释与HTML格式一致

<!-- 这是注释 -->

三、XML约束

DTD 约束
  1. DTD 文件的后缀名 .dtd

  2. 创建 DTD 文档的步骤

    • 查看 xml 文件中有多少个元素, 有几个元素, 在 dtd 文件中写几个 <!ELEMENT>
    • 判断元素是简单元素还是复杂元素
      • 简单元素: 没有子元素, 格式: <!ELEMENT 元素名称 (#PCDATA)>
      • 复杂元素: 有子元素的元素, 格式: <!ELEMENT 元素名称 (子元素)>
    • 在 xml 文件中引入 dtd 文件
      格式: <!DOCTYPE 根元素名称 SYSTEM "dtd 文件的路径">
    • 使用 eclipse 查看校验效果. 因为浏览器只负责校验 xml 的语法, 不负责校验约束.
  3. dtd 的三种引入方式

// 第一种方式: 引入外部的 dtd 文件
    <!DOCTYPE 根元素名称 SYSTEM "dtd 路径">

// 第二种方式: 使用 xml 页面内部的 dtd 文件
    <!DOCTYPE 根元素名称 [
            <!ELEMENT person (name,age)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
        ]>

// 第三种方式: 使用网络上的 dtd 文件
    <!DOCTYPE 根元素 PUBLIC "dtd 名称" "dtd 文档的 url">
    // 示例: struts 2 中使用的配置文件, 使用的是外部的 dtd 文件
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

// 示例: 带有 DTD 的 XML 文档
<?xml version="1.0" encoding="gbk"?>
// dtd 约束
<!DOCTYPE note [
    <!ELEMENT note (to,from,heading,body)>
    <!ELEMENT to    (#PCDATA)>
    <!ELEMENT from  (#PCDATA)>
    <!ELEMENT heading (#PCDATA)>
    <!ELEMENT body   (#PCDATA)>
]>

// xml 内容
<note>
    <to>zhangsan</to>
    <from>lisi</from>
    <heading>Invitation</heading>
    <body>Don't forget the meeting!</body>
</note>

  1. DTD 元素

    • 格式: <!ELEMENT 元素名称 约束>
    • 简单元素: 没有子元素的元素
      • 格式: <!ELEMENT name (#PCDATA)>
      • (#PCDATA): 约束 name 是字符串类型
      • EMPTY: 元素为空
      • ANY: 任意类型
    • 复杂元素
      • 格式: <!ELEMENT 元素名称 (子元素)>,
        例如: <!ELEMENT person (name+,age?,sex*,school)>
      • 表示元素出现的次数:
          • : 表示该元素可以出现一次或多次
        • ? : 表示该元素可以出现零次或一次
          • : 表示该元素可以出现零次或多次
      • 子元素之间使用逗号进行分隔, 表示元素出现的顺序
      • 子元素之间使用 "|" 进行分隔, 表示元素只能出现其中的任意一个
  2. DTD 属性

    • 格式: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
    • 属性的类型:
      • CDATA: 表示值为字符数据
      • (en1|en2..): 表示值是枚举列表中的一个值
      • ID : 值只能是字母或者下划线开头,
    • 属性的约束
      • #REQUIRED: 属性是必需的
      • #IMPLIED: 属性是可有可无的
      • #FIXED: 属性值是固定的
      • 值: 该属性的默认值.
// 示例:规定一个默认的属性值
    // DTD
    <!ELEMENT square EMPTY>
    <!ATTLIST square width CDATA "10">

    // 合法的 XML
    <square width="100" />  // 如果宽度没有被设定, 其默认值为 0

// 示例: 枚举属性值
    // DTD
    <!ELEMENT payment (#PCDATA)>
    <!ATTLIST payment type (check|cash) "cash">

    // 合法的 XML
    <payment type="check" />

  1. DTD 实体
    • 实体是用于定义引用普通文本或特殊字符的快捷方式的变量
    • 在 DTD 中定义, 在 xml 中使用
    • 格式: <!ENTITY 实体名称 "实体内容">
    • 一个实体由三部分组成: "&" + 一个实体名称 + ";"
// 示例:
    // DTD
    <!ENTITY writer "Bill Gates">
    <!ENTITY copyright "版权所有">

    // xml 文件
    <author>&writer;&copyright;</author>

DTD 综合练习
// dtd 约束文件
<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>

// 对应的 xml 文件
<TVSCHEDULE NAME="CSA">
    <CHANNEL CHAN="1">
        <BANNER>
            探索频道
        </BANNER>
        <DAY>
            <DATE>
                星期五
            </DATE>
            <HOLIDAY>
                探索世界
            </HOLIDAY>
        </DAY>
    </CHANNEL>
    <CHANNEL CHAN="2">
        <BANNER>
            经济频道
        </BANNER>
        <DAY>
            <DATE>
                星期二
            </DATE>
            <PROGRAMSLOT>
                <TIME>
                    9:10
                </TIME>
                <TITLE>
                    时间
                </TITLE>
                <DESCRIPTION>
                    北京时间
                </DESCRIPTION>
            </PROGRAMSLOT>
        </DAY>
    </CHANNEL>
</TVSCHEDULE>

Schema 约束
  • Schema 文件本身就是一个 xml 文件, 文件扩展名 ".xsd"
    • Schema 文件的第一行是 xml 的文档声明, 根节点是 <shema>
  • 一个 xml 文件中可以有多个 Schema 文件
// 示例
    // xml 文档
    <?xml version="1.0" encoding="gbk"?>
    <note>
        <to>zhangsan</to>
        <from>lisi</from>
        <heading>Invitation</heading>
        <body>Don't forget the meeting!</body>
    </note>

    // Schema 约束
    <?xml version="1.0" encoding="gbk"?>
    <xs:shema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.cnblogs.com/linkworld/"
    xmlns="http://www.cnblogs.com/linkworld/"
    elementFormDefault="qualified">

    <xs:element name="note">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="to" type="xs:string"/>
                <xs:element name="from" type="xs:string"/>
                <xs:element name="heading" type="xs:string"/>
                <xs:element name="body" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    <xs:element>
    </xs:schema>

    // 对于 Schema 的引用
    <?xml version="1.0" encoding="gbk"?>
    <note
    xmlns="http://www.cnblogs.com/linkworld/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.cnblogs.com/linkworld/ note.xsd">

        <to>zhangsan</to>
        <from>lisi</from>
        <heading>Invitation</heading>
        <body>Don't forget the meeting!</body>
    </note>

  • Schema 约束文件说明

    • <schema> 元素可包含属性
    • xmlns:xs="http://www.w3.org/2001/XMLSchema"
    • targetNamespace="http://www.cnblogs.com/linkworld/"
      • 使用 schema 约束文件时, 直接通过这个地址引入约束文件. 为了避免约束空间的重复, 使用 url 地址命名
    • xmlns="http://www.cnblogs.com/linkworld/"
    • elementFormDefault="qualified"
      • 表示任何 xml 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
  • 在 xml 文件中引入 Schema 约束文件

    • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      • 表示该 xml 文件是一个被约束文件, 注意 -instance
      • "xsi" 表示 xmlns 的别名, 为了避免和下面名称空间的冲突
    • xmlns="http://www.cnblogs.com/linkworld/"
    • xsi:schemaLocation="http://www.cnblogs.com/linkworld/ note.xsd">
      • 包含两个参数
      • 第一个参数是需要使用的命名空间
      • 第二个参数约束文档的地址路径
  • 编写 Schema 约束文件步骤

// 1\. 查看 xml 中有多少个元素, `<element name="元素名">`
// 2\. 查看简单元素和复杂元素
        // 复杂元素
            <complexType>
                <sequence>
                    子元素
                </sequence>
            </complexType>

        // 简单元素, 写在复杂元素 sequence 里面
            <element name="元素名"/>

  • Schema 中的简单元素
    • 简单元素指那些仅包含文本的元素
// 1\. 定义简单元素的语法:
    <element name="元素名" type="元素类型"/>

// 示例:
    // xml 文件
    <lastname>Smith</lastname>
    <age>29</age>
    <birthday>1996-4-9</birthday>

    // schema 约束
    <element name="lastname" type="string"/>  // lastname 的类型是 string
    <element name="age" type="integer"/>  // age 的类型是 integer
    <element name="birthday" type="date"/> // birthday 的类型是 date

    // 简单元素的默认值和固定值
    <element name="color" type="string" default="red"/> // 默认值

    <element name="color" type="string" fixed="red"/> //固定值

  • Schema 中复杂元素指示器
    • Order 指示器: 用于定义元素的顺序
      • All: 可以按照任意顺序出现, 并且每个子元素必须只出现一次
      • Choice: 表示元素只能出现其中的一个
      • Sequence: 子元素必须按照特定的顺序出现
    • Occurrence 指示器: 用于定义某个元素出现的频率
      • maxOccurs: 某个元素可出现的最大次数
      • minOccurs: 某个元素能够出现的最小次数
    • Group 指示器: 用于定义相关的数批元素
      • Group name: 元素组
      • attributeGroup name: 属性组

转载文章
XML 之快速入门

相关文章

  • XML快速入门

    1、XML数据格式用途 1、用作配置文件:数据库配置、项目配置、应用程序配置等,例如使用Netbeans创建项目时...

  • XML快速入门

    一、XML简介 XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记...

  • spring-jdbc

    spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2、编写UserDao

  • spring-jdbc

    spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2.编写UserDao

  • spring学习笔记三-JDBC

    [TOC] spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2、编写UserDao

  • Spring框架——Jdbc

    spring-jdbc快速入门 一、xml配置方式 导入包 1.配置xml,用来创建对象 2.编写UserDao

  • 21.SpringMVC

    一、快速入门 xml方式: 导入坐标 在web.xml里配置前端控制器 创建controller 4.创建spri...

  • 20.Spring

    一、快速入门 使用maven导入坐标 创建bean 创建applicationContext.xml,并在文件中配...

  • Docker:使用 Maven 插件构建镜像

    通过 Maven 的 Docker 插件可以构建 Docker 镜像 快速入门 在 pom.xml 中添加 Doc...

  • [Sheepdog] Libvirt

    快速入门指南 基于sheepdog卷的VM启动 编写xml文件 以virsh方式启动sheepdog卷 testv...

网友评论

      本文标题:XML快速入门

      本文链接:https://www.haomeiwen.com/subject/cfejaktx.html