XML

1 xml基本语法

(1)字符

由16位的Unicode 字符组成

(2)命名

必须字母 ,下划线或者冒号开头,其他包括数字,-,以及句号,但是在实际运用中不该用冒号

(3)文档部分`

正规的xml有三部分

  1. prolog
  2. body
  3. epilog
(4)元素

除了处理指令PI、注释和空白其他的 其他的必须包含在标签中,标签的基本形式<></>,但是空元素可以写成或者

(5)字符串

''或者""必须成对出现

(6)字符数据

数据是元素或者属性值的文本内容,<>& '“分别用“&It;”,"&gt;","&amp;","&apos;","&quot;"

(7)属性
  1. 一个元素的属性名称唯一,属性值可以时字符串可以时数字,其中<>& 的替代方式“&It;","&gt;","&amp;"
  2. 空白有四种,分别是 水平指标(HT ) 换行(LF) 回车(CR) 空格字符 ,解析器会原封不动的保留内容中的空白传递给应用程序,但是标签和属性中的空白会被删除
  3. 行尾的处理 有三种LF/CR ,LF,CR 实际中LF居多
(8)注释

<!–comment text–>

(9)CDATA

CDATA 部分由 “<![CDATA[" 开始,由 "]]>” 结束:它包含的数据不会被xml解析

(10)格式正规的文档
  • 语法合乎xml规范
  • 只有一个根节点
  • 没有对外部实体的引用,除非提供了DTD

2.命名空间

避免了相同的元素称
命名空间实例
xmlns=“url”
xmlns=“uri”
修饰名 xmlns:mynamespace=url
使用的时候 <mynamespace:xx ></mynamespace>

3.DTD 文档类型定义(验证器的作用)

有三部分内容元素声明,实体声明(元素名称),属性的种类(元素种类) DTD强调了文档的结构性

(1)结构符号的具体描述
结构符号说明
()将元素或者数据类型合并为一个单位
元素或者数据以出现的顺序排列
*出现0次或者多次
+出现1次以上
出现1次或者0次
|

(2)元素

<!ELEMENT 元素名称 类别>
<1>空元素 <!ELEMENT 元素名称 EMPTY>
<2>文本元素 <!ELEMENT 元素名称 (#PCDATA)>
<3>无限制元素 <!ELEMENT 元素名称 ANY>
<4>包含子元素的元素 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

(3)DTD的声明
  • 内部声明
例子1
<?xml version="1.0" encodeing="UTF-8"?>
<!DOCTYPE Student[
	<!ELEMENT name(#PCDATA)>
	<!ELEMENT class(ANY)>
	<!ELEMENT sex("男","女")>
	<!ELEMENT brithday(#PCDATA)>
	<!ELEMENT Student(name,class,sex,brithday)>
]>
<Student>
	<name>张三</name>
	<class>301</class>
	<sex></sex>
	<brithday>20200901</brithday>
</Student>

例子2
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE poem [
	<!ELEMENT poem (title,author,line+)>
	<!ELEMENT title (#PCDATA)>
	<!ELEMENT author (#PCDATA)>
	<!ELEMENT line (#PCDATA)>
]>
<poem>
	<title>静夜思</title>
	<author>李白</author>
	<line>床前明月光,</line>
	<line>疑事地上霜.</line>
	<line>举头望明月,</line>
	<line>低头思故乡.</line>
</poem>
  • 外部声明
<!DOCTYPE  元素名称 SYSTEM URI>
或者
<!DOCTYPE  元素名称 PUBLIC DTD名称 URI>
如果为生命DTD名称,可自行定义一个
如果同时使用内部声明和外部声明,优先使用内部

(4)实体

实体:已经定义好的实体
<1> 内部实体和外部实体 == 内部实体在本文件,外部的在别的DTD文件==

//内部  <!ENTITY 实体名称 "实体的值">
<?xml version="1.0"?>
<!DOCTYPE note [
  <!ENTITY writer "Bill Gates">
  <!ENTITY copyright "Copyright W3School.com.cn">
]>
 <note>&writer;     &copyright;</note>

在这里插入图片描述

//外部   <!ENTITY 实体名称 SYSTEM "URI/URL">

<2> 可分解实体和不可分解实体 二进制文件是不可分实体

不可分实体的声明的方法

第一种: <!NOTATION 格式 SYSTEM|PUBLIC URI>
第二种: <!ENTITY 实体名称 SYSTEM|PUBLIC  URI NDATA 格式>

例子
<!NOTATION gif SYSTEM "c:\1.gif">
<!ENTITY productpicture SYSTEM "c:/1.gif" NDATA gif>

<3> 一般型实体和参数型实体

项目一般型实体参数型实体
声明语法<!ENTITY 实体名称 实体内容><!ENTITY%实体名称 实体内容>
声明处外部或者内部外部
引用&%
限制元素声明不可以使用(不可以替代ELEMENT)外部DTD和xml文件本体中不能使用
使用dtd实体以及xml文件本体内外部DTD的实体声明和元素声明(可以替代ELEMENT和实体名称)
(5)属性的声明
<!ATTLIST 元素名称 属性名称 属性类型 属性默认值类型>

其中属性类型
1.CDATA 一般文本 
2.枚举 如<!ATTLIST 元素名称 属性名称 (属性1|属性2|属性3|...|属性n) 默认值类型>
3.NMTOKEN|NMTOKENS 由数字下划线和字母组成的字符串 如<!ATTLIST 元素名称 属性名称 NMTOKEN|NMTOKENS 默认值类型> 
4.ENTITY|ENTITYS 当属性值是一个外部实体引用时
5.NOTATION 不可分解实体
6.ID 只能出现一次
7.IDREF|IDREFS 此类型是相对于ID的引用

默认值类型
1.#LMPLIFD 属性可出现可不出现
2.#REQRIED 属性一定出现
3.#FLXED 一定出现,切为特定值

4.schema

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
  • 元素的类型增多
  • Content 包含textOnly(只包含文本型内容) eltOnly(只包含元素类型的内容) empty(空) mixed(前面都可能)
  • 出现的次数 minOccurs maxOccurs
  • 标记的子标记出现的次序 order=“one” 出现一个子标记 order=“many” 任意的顺序任意个 order="seq"按照规定好的次序出现
  • 元素的开放性和封闭性 当model=“open” 除了包含自定义的子标记,还可以包含其他,close则不行

5.可扩展性语言xsl

xsl是xml的具体的应用,有两部分组成1.描述如何转换xml文档,得到一个结果树2.格式化对象FO分析结果树,进行输出

(1)xml在网络中的具体应用

有两种模式

  • 服务器模式(将xml) 可以进行实时转换和批量转换
  • 客户端模式 浏览器实时进行转换
(2)xslt
  • 文档结构
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl=URI >
	...
<.xsl::stylesheet>
  • 模板与应用
<xsl:template match="xx">
<xsl:apply-templates select='xx'>
  • 计算节点值
<xsl:value-of select="prigin"/>
  • 元素与属性的创建
<xsl:element name="姓名"></xsl:element>
<xsl:attribute name="style"/>color:blue</xsl:attribute>
<xsl:text>helloworld</text>
<xsl:processing-instruction name='xml-stylesheet'>href="book.css" type="text/css"</xsl:procesing-instruction>
<xsl:comment>只是注释</xsl:comment>
<xsl:copy>
  • 循环处理
<xsl:for-each seletc="Student" ord-by="name">
...
</xsl:for-each>
  • 排序
<xsl:sort case-order="upper-first" select="@id"/>
<xsl:sort case-order="lower-first" select="@id"/>
<xsl:sort order="ascending-first" select="@id"/>
<xsl:sort order="decending-first" select="@id"/>
<xsl:sort data-type="text" select="@id"/>
<xsl:sort data-type="number" select="@id"/>
  • 输出格式
<xsl:output method="html"/>

6.其他

(1)xpath
<>::<节点测试>[<谓语表达式>]:
child::sibling[position()=3]即选择child的第三个子节点  ps:在爬虫使用不错
(2)xLink和xPoint
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值