Xml培训笔记
发布时间:2020-12-16 05:13:52 所属栏目:百科 来源:网络整理
导读:6月18号Xml:(可扩展的标记语言) 是一个可扩展的标记语言是SGML的子集 用于存储数据和交换数据。实现数据的共享。Xml中涉及的技术有: 验证,约束:DTD/Schema 转换:XSL XSLT 查询:XPath 链接:XLink XPointer 解析:DOM/SAX回顾HTML: 1、根元素html 事
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解析时:基于事件,不需要加载整个文档 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |