前端之家收集整理的这篇文章主要介绍了
Xml培训笔记,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
6月18号
Xml:(可扩展的标记语言)
是一个可扩展的标记语言是SGML的子集
用于存储数据和交换数据。实现数据的共享。
Xml中涉及的技术有:
验证,约束:DTD/Schema
转换:XSL XSLT
查询:XPath
链接:XLink XPointer
解析:DOM/SAX
回顾HTML:
1、根元素<html> 事实可以有多个根元素
2、一个元素可以不写结束标签。
3、属性的值可以不是用引号引起来
4、标签是不区分大小写的
5、标签的嵌套很随意。(交叉嵌套)
6、html标签没有特定的语义,只关注表现形式。
XML:
SGML ==》 HTML(显示数据)
两者 ==》XML(存储数据,交换数据)
经常被使用在应用的配置文件中。
语法:
Xml声明:<?xml version="1.0" encoding="utf-8" standalone="yes"?>
Xml处理指令:
例如:<?xml-stylesheet type="text/css" href="" ?>
文档类型定义:
<!DOCTYPE 根元素 SYSTEM 文件路径>
XML文档注释:
<!-- -->
XML元素:
有且只能有一个根元素
元素命名规则:
1、只能使用字母(包含中文),下划线开头。
2、后面可以是中文,字母,数字,_,-,.(点号)
3、元素名不能有空格 和 :冒号
4、名称区分大小写
5、元素名称建议不要使用xml开头
6、元素中的属性必须使用“”
7、同一元素中不能同名属性
8、元素的属性值中不能出现><&符号
9、元素必须有结束标签
实体:
预订义实体:<(<) >(>) &(&) "(") '(,)
自定义实体
元素内容分类:
1、PCDATA :纯字符数据(不包含<) 会被xml解析器解析
2、CDATA :一段字符快。。其中的字符快仅仅表示字符,不会被xml解析器解析。
语法:<![CDATA[......]]>
xml解析器:
非验证解析器:只查看xml文档的是否规则
验证解析器:还要查看xml文档是否有效(满足特定的约束和规范)
DTD:Document Type Definition 文档类型定义
-----------------------------------------
可以定义:
1、元素
2、元素之间的关系
3、元素中的属性
4、实体以及符号
DTD是xml的模板,对xml进行约束
DTD可以被定义在xml文档内部,也可以定义成一个独立的文档
内部DTD:<!DOCTYPE 根元素 [定义的内容]>
外部DTD:
1、创建独立的dtd文件(*.dtd)
2、在xml中引入
<!DOCTYPE 根元素 SYSTEM "dtd文件路径">
内外部DTD:
<!DOCTYPE 根元素 SYSTEM "dtd文件路径" [内部dtd]>
内部:
-----
元素的定义:<!ELEMENT 元素名 元素类型>
--------
元素类型:EMPTY ANY #PCDATA 纯元素类型 混合类型
元素的修饰:+ * ? () |,例如:
<!DOCTYPE 诗 [
<!ELEMENT 诗 (作者,标题,内容) >
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 标题 (#PCDATA)>
<!ELEMENT 内容 (#PCDATA)>
] >
外部:
<!DOCTYPE 诗 SYSTEM "xml15.dtd" >
<!ELEMENT 诗 (作者,内容) >
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 标题 (#PCDATA)>
<!ELEMENT 内容 (#PCDATA)>
属性的定义
----------
语法:<!ATTLIST 元素名 属性名 属性的类型 属性的特点>
属性的类型:
CDATA(纯字符数据)
ID(值不能以数字开头 具有唯一性)
IDREF(值要来自于其它ID的值)
IDREFs(值要来自于其它ID的值,引用多个ID的值) 用空格隔开
NMTOKEN 是CDATA 的一个子集,表示属性值必须是英文字母、数字、句号、破折号、下划线或冒号(不能有空格!)。
NMTOKENS 多个用空格隔开
Enumerated:枚举 <!ATTLIST person 性别 (男|女) #required>
实体分类:普通实体和参数实体
ENTITY:实体 ---普通实体
定义:内部实体:<!ENTITY 实体名 实体值>
外部实体:<!ENTITY 实体名 SYSTEM "路径URL"> //FF不支持
使用实体:&实体名;
ENTITIES:多个
参数实体定义:
内部实体:<!ENTITY % 实体名 实体值>
使用:%实体名;
外部实体:<!ENTITY % 实体名 SYSTEM "URL">
使用范围:在能在独立的DTD或者属性中
NOTATION
属性特点:
#required(必须的)
#IMPLIED(可选的)
<!ATTLIST 人 name CDATA #required 学历 CDATA #IMPLIED>
#FIXED (固定的) <!ATTLIST 宠物 age CDATA #FIXED "12">
默认值: <!ATTLIST 宠物 sex CDATA "公">
命名空间NameSpace
----------
命名空间:避免命名冲突
<book mxlns:people="http://www.wangwei.com">
<title>西游记</title>
<author>
<name>吴承恩</name>
<people:title people:pay="130000">小说家</people:title>
</author>
</book>
Schema:
-------------
1、它是xml的模板
2、它本身的格式基于xml
Schema特点:
1、基于xml格式
2、支持大量的数据类型,且能过自定义数据类型。(类型能够与数据库类型保持一致)
3、支持命名空间
在schema中,元素可以分为两大类
1、复合元素:包含子元素或者属性的元素
2、简易元素:即没有子元素也没属性元素
Schema中定义简易元素的语法:
<element name="" type="元素的内容类型">
常见的类型:string decimal integer boolean date time
复合元素:
1、只包含子元素的元素 <xx><aa></aa></xx>
2、只包含属性的空元素 <xx bb="aa">
3、只包含属性和文本的元素 <aa bb="cc"></aa>
4、即包含子元素也包含属性的元素 <aa cc="dd"><bb></bb></aa>
5、包含文本和子元素的元素 <aa> bb <cc> dd </cc> </aa>
复合元素--案例:
---------------
<element name="products"> <!-- 包含属性的元素 -->
<complexType> <!-- 标识当前元素的一个复合元素 -->
<sequence> <!-- 指示子元素出现的顺序 -->
<element name="product">
<complexType>
<attribute name="id" type="integer" use="optional"></attribute>
</complexType>
</element>
<element name="address"> <!-- 包含属性和文本的元素 -->
<complexType>
<simpleContent><!-- 表示此元素的内容是一个简单文本内容 -->
<extension base="string"> <!-- base是写元素内容类型 -->
<attribute name="zip" type="integer"></attribute>
</extension>
</simpleContent>
</complexType>
</element>
<element name="suppliy"> <!-- 有属性和子元素的元素 --> <!--先定义元素后定义属性-->
<complexType>
<sequence>
<element name="proaddress" type="string" ></element>
</sequence>
<attribute name="name" type="string" use="required"></attribute> <!-- use属性默认可选的 -->
<attribute name="num" type="integer"></attribute>
</complexType>
</element>
<element name="customer"> <!-- 有文本和子元素的元素 -->
<complexType mixed="true"> <!-- 指元素内容是混合的,默认是false -->
<sequence>
<element name="name" type="string"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
---------------------------------
属性:
default:默认的
fixed:固定
use:默认是可选的 required 必须的
对元素类型的限制:
------------------
<element name="people">
<complexType>
<sequence>
<element name="age">
<simpleType> <!-- 当前元素是一个简易类型 -->
<restriction base="integer"> <!-- 内容的类型 -->
<minInclusive value="5"></minInclusive> //最大值包括在内的
<maxInclusive value="25"></maxInclusive>
</restriction>
</simpleType>
</element>
<complexType>
<sequence>
</element>
<enumeration value="法拉利"></enumeration> <!-- 列举一些列的值 -->
<enumeration value="兰博基尼"></enumeration>
<enumeration value="宝马"></enumeration>
<pattern value="s[a-z]+"></pattern> <!-- 模式约束 -->
<length value="6"></length> <!-- 限制长度 -->
<minLength value="2"></minLength>
<maxLength value="6"></maxLength>
指示器:
-------------
有七种指示器:
Order 指示器【顺序指示器】
All:任意顺序
Choice:多选一个
Sequence 使用的顺序必须和定义的顺序保持一致
Occurrence 指示器:【定义元素出现的频率】
maxOccurs:默认一次
minOccurs;默认一次 maxOccurs="unbounded" //出 现 次 数 不 受 限 制
//出现在sequence指示器下面
案例:<element name="猫" type="string" minOccurs="1" maxOccurs="3"></element>
Group 指示器:
Group name:
attributeGroup name
=========================================================================
CSS:层叠样式表
可以用在html中也可以用在xml中
html中引用外部css样式表:<link rel="stylesheet" type="text/css" href="">
XMl中引用外部css样式表: <?xml-stylesheet type="text/css" href="person.css"?>
XSL:(Extensible StyleSheets Language)可扩展的样式表语言(*.xsl)
还包含:XSLT(xml文档转化) XPATH(xml文档导航语言) XML-FO(xml文档格式化)
XSL模板
节点选择语句<xsl:value-of select="匹配模式"> //取出xml文件中被选择的元素或者属性的内容
<xsl:value-of select="模式"> //获取指定节点的值
<xsl:value-of select="@属性名"> //获取指定属性的值
//遍历该文档的所有子节点
循环语句<xsl:for-each select="唐诗/五言绝句" order-by="-作者">
order-by 需要草案空间,草案空间FF不支持
order-by 默认是升序(+) 降序(-);
条件判断语句<xsl:if test="条件">
主要有三种情形:
1、条件:元素名称 <xsl:if test="元素名称"> 判断当前是否是该元素
2、条件:元素名称=值 <xsl:if test="元素名称='值'"> 判断当前元素是否是该指定的值
3、条件:属性名称=值 <xsl:if test="属性名称='值'">判断当前元素的莫个属性是否是指定的值
多条件判断语句<xsl:choose>
<xsl:choose>
<xsl:when test="">
</xsl:when>
<xsl:when test="">
</xsl:when>
............
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
排序语句<xsl:sort>
<xsl:apply-templates select="roster/student">
<xsl:sort select="score" order="descending"/>
</xsl:apply-templates>
注意:<xsl:sort>只能出现在<xsl:apply-templates>和<xsl:fro-each>元素中
XSL中定义一个模板(函数定义)
<xsl:template match="匹配模式"> 匹配模式:XPath 路径:用于匹配到XML中的莫个节点
调用一个模板(函数调用)
<xsl:apply-templates select="模式"> //select可以省略
select没有省略:会去调用与select中写的模式相对应的模板
<!-- apply-templates中select属性不写,则会调用当前元素下的所有子元素 -->
============================
XML解析:
主要方式有:DOM JDOM dom4j SAX
使用DOM解析时:需要将整个文档预先加载。(适合小文键处理)
使用SAX解析时:基于事件,不需要加载整个文档
原文链接:https://www.f2er.com/xml/299559.html