xml基础
xml基础xml的简介
xml的应用
xml的语法(1)xml的文档声明 * 创建一个文件 后缀名是 .xml * 如果写xml,第一步 必须要有 一个文档声明(写了文档声明之后,表示写xml文件的内容) <?xml version="1.0" encoding="utf-8"?>
文档声明必须写在 第一行第一列 * 属性 - version:xml的版本 1.0(使用) 1.1 - encoding:xml编码 gbk utf-8 iso8859-1(不包含中文) - standalone:是否需要依赖其他文件 yes/no 保存文件的编码和设置打开时候的编码要一致,不然会出现乱码 xml的元素(标签)定义* 标签定义 * 标签定义有开始必须要有结束:<person></person> * 标签没有内容,可以在标签内结束 ; <aa/> * 标签可以嵌套,必须要合理嵌套 >> 合理嵌套 <aa><bb></bb></aa> >>不合理嵌套 <aa><bb></aa></bb>: 这种方式是不正确的 * 一个xml中,只能有一个根标签,其他标签都是这个标签下面的标签 *在xml中把空格和换行都当成内容来解析, *下面这两段代码含义是不一样的 * <aa>2222211</aa> * <aa> 22222222221 </aa> ** xml标签可以是中文 ** xml中标签的名称规则 (1)xml代码区分大小写 <p> <P>:这两个标签是不一样的 (2)xml的标签不能以数字和下划线(_)开头 <2a> <_aa>: 这样是不正确的 (3)xml的标签不能以xml、XML、Xml等开头 <xmla> <XmlB> <XMLC>: 这些都是不正确的 (4)xml的标签不能包含空格和冒号 <a b> <b:c> : 这些是不正确的 xml中属性的定义* 属性定义的要求 (1)一个标签上可以有多个属性 <person id1="aaa" id2="bbb"></person> (2)属性名称不能相同 <person id1="aaa" id1="bbb"></person>:这个是不正确,不能有两个id1 (3)属性名称和属性值之间使用= ,属性值使用引号包起来 (可以是单引号,也可以是双引号 ) (4)xml属性的名称规范和元素的名称规范一致 xml中的注释* 写法 <!-- xml的注释 --> 注释不能嵌套 xml中的特殊字符(和html中的特殊字符使用相同)CDATA区* 可以解决多个字符都需要转义的操作 * 把这些内容放到CDATA区里面,不需要转义了 > 写法 <![CDATA[ 内容 ]]> 实例代码 <![CDATA[ <b>if(a<b && b<c && d>f) {}</b> ]]> PI指令(处理指令)* 可以在xml中设置样式 * 写法: <?xml-stylesheet type="text/css" href="css的路径"?> 注意: xml的约束* 为什么需要约束?
* xml的约束的技术 : dtd约束 和 schema约束 dtd约束dtd文件的创建* 创建一个文件 后缀名 .dtd 步骤: (1)看xml中有多少个元素 ,有几个元素,在dtd文件中写几个 <!ELEMENT> (2)判断元素是简单元素还是复杂元素 - 复杂元素:有子元素的元素 <!ELEMENT 元素名称 (子元素)> - 简单元素:没有子元素 <!ELEMENT 元素名称 (#PCDATA)> (3)需要在xml文件中引入dtd文件 <!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径"> dtd的三种引入方式(1)引入外部的dtd文件 <!DOCTYPE 根元素名称 SYSTEM "dtd路径"> (2)使用内部的dtd文件 - <!DOCTYPE 根元素名称 [ <!ELEMENT person (name,age)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> ]> (3)使用外部的dtd文件(网络上的dtd文件) <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL"> - 框架 struts2 使用配置文件 使用 外部的dtd文件 - <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> 使用dtd定义元素1.语法: <!ELEMENT 元素名 约束> 2.简单元素:没有子元素的元素 <!ELEMENT name (#PCDATA)> * (#PCDATA): 约束name是字符串类型 * EMPTY : 元素为空(没有内容) * ANY:任意 3. 复杂元素: <!ELEMENT person (name,age,sex,school)> - 子元素只能出现一次 * <!ELEMENT 元素名称 (子元素)> * 表示子元素出现的次数 + : 表示一次或者多次 ? :表示零次或者一次 * :表示零次或者多次 <!ELEMENT person (name+,age?,sex*,school)> * 子元素直接使用逗号进行隔开,>表示元素出现的顺序 * 子元素直接使用|隔开 >表示元素只能出现其中的任意一个 使用dtd定义属性1. 语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束 > 2. 属性类型 - CDATA: 字符串 - <!ATTLIST birthday ID1 CDATA #REQUIRED > - 枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 ** 红绿灯效果 ** (aa|bb|cc) - <!ATTLIST age ID2 (AA|BB|CC) #REQUIRED > - ID: 值只能是字母或者下划线开头 - <!ATTLIST name ID3 ID #REQUIRED > 3. 属性的约束 - #REQUIRED:属性必须存在 - #IMPLIED:属性可有可无 - #FIXED: 表示一个固定值 #FIXED "AAA" - 属性的值必须是设置的这个固定值 - <!ATTLIST sex ID4 CDATA #FIXED "ABC" > - 直接值 * 不写属性,使用直接值 * 写了属性,使用设置那个值 - <!ATTLIST school ID5 CDATA "WWW" > 实体的定义* 语法: <!ENTITY 实体名称 "实体的值"> <!ENTITY TEST "aaaa"> 使用实体 &实体名称; 比如 &TEST; schema约束1、schema基础
创建步骤
(1)看xml中有多少个元素
<element>
(2)看简单元素和复杂元素
* 如果复杂元素
<complexType>
<sequence>
子元素
</sequence>
</complexType>
(3)简单元素,写在复杂元素的里面
<element name="person">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
(4)在被约束文件里面引入约束文件
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="uri(与前面相同)" xsi:schemaLocation="URI 文件名">
约束标签
* <sequence>:表示元素的出现的顺序
<all>: 元素只能出现一次
<choice>:元素只能出现其中的一个
maxOccurs="unbounded": 表示元素的出现的次数
<any></any>:表示任意元素
* 可以约束属性
* 写在复杂元素里面
***写在 </complexType>之前
--
<attribute name="id1" type="int" use="required"></attribute>
- name: 属性名称
- type:属性类型 int stirng
- use:属性是否必须出现 required
* 复杂的schema约束
<company xmlns = "http://www.example.org/company" xmlns:dept="http://www.example.org/department" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd" >
* 引入多个schema文件,可以给每个起一个别名
<employee age="30">
<!-- 部门名称 -->
<dept:name>100</dept:name>
* 想要引入部门的约束文件里面的name,使用部门的别名 detp:元素名称
<!-- 员工名称 -->
<name>王晓晓</name>
</employee>
-----这里学的很晕回头再看
dtd与schamedtd语法: <!ELEMENT 元素名称 约束>
** schema符合xml的语法,xml语句
** 一个xml中可以有多个schema,多个schema使用名称空间区分
** dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
*** 比如 年龄 只能是整数,在schema可以直接定义一个整数类型
*** schema语法更加复杂
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |