javaweb 之 xml

xml

XML (Extensible Markup Language):指可扩展标记语言,xml中得元素标签是自定义的。使用 DTD 或者 schema约束来规定xml的书写规则。

通过 XML 从 HTML 中分离数据。数据存储在独立的 XML 文件中,这样就可以专注于使用 HTML 对数据进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。

XML 作用:用来传输和存储数据

  1. 用于配置文件(xml后缀,与properties配置文件一样)。xml用于复杂的配置,properties用于简单的配置。
  2. 在网络中传输。

xml与html的区别:

  1. XML 被设计用来传输和存储数据,其重点是数据的内容(存储数据);HTML 被设计用来显示数据,其重点是数据的外观(展示数据)。
  2. xml标签都是自定义的,html标签是预定义(已经定义好的)。
  3. xml的语法严格,html语法松散
  4. xml是存储数据的,html是展示数据

xml 语法格式

基本语法:

  1. xml文档的后缀名 .xml;
  2. xml第一行必须定义为文档声明
  3. xml文档中有且仅有一个根标签
  4. 属性值必须使用引号(单双都可)引起来; 如:<note date=“08/08/2008”>
  5. 所有元素都必须有关闭标签
  6. xml标签名称区分大小写
  7. 注释:<!-- -->

xml第一行必须定义为文档声明:格式:

<?xml 属性列表 ?>

属性列表:

  • version:版本号,必须的属性
  • encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
  • standalone:是否独立 * 取值:
    • yes:不依赖其他文件
    • no:依赖其他文件

如:

 <?xml version="1.0" encoding="utf-8"?>

约束分类

约束:规定xml文档的书写规则

  • XML 文档构建模块
    所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
  • 元素(标签)

  • 属性(属性可提供有关元素的额外信息,属性总是以名称=“值”的形式成对出现的。)

  • 实体 (实体是用来定义普通文本的变量,标签体内容。实体引用是对实体的引用。)

  • PCDATA :PCDATA 的意思是被解析的字符数据(parsed character data)。

    • 把开始标签与结束标签之间的字符数据标记为标签体内容。通过这个标记,这个标签元素将会被解析。PCDATA 表示是会被解析器解析的文本。即标签元素解析后再将内容展示在页面上。
  • CDATA :CDATA 的意思是字符数据(character data)。

    • CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。即标签和标签体内容原样显示在页面上。

DTD

DTD:一种简单的约束技术。DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。 https://www.w3school.com.cn/dtd/index.asp

通过\<!DOCTYPE      \>引入

内部的 DOCTYPE 声明

假如 DTD 被包含在 XML 源文件中,应当通过下面的语法包装在一个 DOCTYPE 声明中,格式:

      <!DOCTYPE 根元素 [元素声明]>

举例:

      <?xml version="1.0"?>
      <!DOCTYPE note [
        <!ELEMENT note (to,from,heading,body)>
        <!ELEMENT to      (#PCDATA)>
        <!ELEMENT from    (#PCDATA)>
        <!ELEMENT heading (#PCDATA)>
        <!ELEMENT body    (#PCDATA)>
      ]>
      <note>
        <to>George</to>
        <from>John</from>
        <heading>Reminder</heading>
        <body>Don't forget the meeting!</body>
      </note>

解释:

	 <!DOCTYPE note [	定义此文档是 note 类型的文档。note为根元素。
	 
	  定义 note 元素有四个元素:"to、from、heading,、body"
	  <!ELEMENT note (to,from,heading,body)>
	  
	   定义 to 元素为 "#PCDATA" 类型
	   <!ELEMENT to      (#PCDATA)>
	   
	   定义 from 元素为 "#PCDATA" 类型,下同
	   <!ELEMENT from    (#PCDATA)>
	   <!ELEMENT heading (#PCDATA)>
	   <!ELEMENT body    (#PCDATA)>
]>

外部文档声明

假如 DTD 位于 XML 源文件的外部,那么通过下面的语法被封装在一个 DOCTYPE 定义中,格式:

      <!DOCTYPE 根元素 SYSTEM "文件路径">

举例:

      <?xml version="1.0"?>
      <!DOCTYPE note SYSTEM "note.dtd">
      <note>
      <to>George</to>
      <from>John</from>
      <heading>Reminder</heading>
      <body>Don't forget the meeting!</body>
      </note> 

“note.dtd” 文件:

      <!ELEMENT note (to,from,heading,body)>
      <!ELEMENT to (#PCDATA)>
      <!ELEMENT from (#PCDATA)>
      <!ELEMENT heading (#PCDATA)>
      <!ELEMENT body (#PCDATA)>

Schema

Schema:一种复杂的约束技术。XML Schema 是基于 XML 的 DTD 替代者,XML Schema 可描述 XML 文档的结构,XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。 https://www.w3school.com.cn/schema/index.asp

  • XML Schema功能比较完善:
  • 定义可出现在文档中的元素
  • 定义可出现在文档中的属性
  • 定义哪个元素是子元素
  • 定义子元素的次序
  • 定义子元素的数目
  • 定义元素是否为空,或者是否可包含文本
  • 定义元素和属性的数据类型
  • 定义元素和属性的默认值以及固定值
  • 通过对数据类型的支持:
  • 可更容易地描述允许的文档内容
  • 可更容易地验证数据的正确性
  • 可更容易地与来自数据库的数据一并工作
  • 可更容易地定义数据约束(data facets)
  • 可更容易地定义数据模型(或称数据格式)
  • 可更容易地在不同的数据类型间转换数据

举例:
对于一个"note.xml" 的 XML 文档:

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

dtd约束:

      <!ELEMENT note (to, from, heading, body)>
      <!ELEMENT to (#PCDATA)>
      <!ELEMENT from (#PCDATA)>
      <!ELEMENT heading (#PCDATA)>
      <!ELEMENT body (#PCDATA)>

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: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>

解释:

1、<schema> 元素是每一个 XML Schema 的根元素,<schema> 元素可包含属性:
      	<?xml version="1.0"?>
          <xs:schema>
          ...
          ...
          </xs: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>
2、xmlns:xs="http://www.w3.org/2001/XMLSchema"
      显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。
      同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型
应该使用前缀 xs。
3、targetNamespace="http://www.w3school.com.cn" 
     显示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间: 
"http://www.w3school.com.cn"。
4、xmlns="http://www.w3school.com.cn" 
     指出默认的命名空间是 "http://www.w3school.com.cn"。
5、elementFormDefault="qualified"
     指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
6、<xs:element name="xxx" type="yyy"/>
     定义简易元素的语法。
     此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。
     最常用的类型是:
          • xs:string
          • xs:decimal
          • xs:integer
          • xs:boolean
          • xs:date
          • xs:time

XML 文档对 XML Schema 的引用:

在 XML 文档中含有对 XML Schema 的引用:

<?xml version="1.0"?>

<note xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>     

代码解释:

xmlns="http://www.w3school.com.cn" 
规定了默认命名空间的声明。此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素
都被声明于 "http://www.w3school.com.cn" 这个命名空间。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
拥有了可用的 XML Schema 实例命名空间:

xsi:schemaLocation="http://www.w3school.com.cn note.xsd"
使用 schemaLocation 属性了。此属性有两个值。第一个值是需要使用的命名空间。第二个值是
供命名空间使用的 XML schema 的位置。

* 引入一个note.xsd文件,命名空间为http://www.w3school.com.cn,如果使用该文件中的元素,需要写成 
命名空间:元素 的形式,比较麻烦,如:<http://www.w3school.com.cn:from> </http://www.w3school.com.cn:from>。
* 为了简化,使用 xmln:a = "http://www.w3school.com.cn" ,这时再使用<a:from> </a:from>。
* 再进一步,xmln = "http://www.w3school.com.cn",这样就是默认使用该文件中元素,<from> </from>。

xml命名空间参考:
http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml
https://blog.csdn.net/wqc19920906/article/details/82709970

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值