首页 > 代码库 > XML简单学习
XML简单学习
XML简单概述
1.Extensible Markup language可扩展标记语言;
2.作用:具有层次性的描述有关系的数据;
体现在:描述数据关系;软件配置,以描述程序模块之间的关系;
语法介绍
1.文档声明:
<?xml version="1.0" encoding="utf-8" ?>
注意编码的统一性 储存在内存中的编码格式,与解析器打开的两者统一
2.元素:element
成对标签 <label>pcdata</lable>
元素属性 也可以理解或写成子元素;对XML标签中出现的所有空格和换行,XML解析程序都会当做是标签内容处理
3.注释:
<!-- 局部注释 -->
<!--
...大段注释
...
-->
4.不解析的部分:当做原始内容直接输出
<![CDATA[内容]]>
5.处理指令:
用来指挥解析器如何解析文档的内容,如:xml文档中可以用xml-stylesheet指令来通知xml解析引擎,引用css文件来显示xml文档内容:
<? xml-stylesheet type="text/css" href="http://www.mamicode.com/1.css"?>
------------------简单例子--------------------------------
<?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/css" href="http://www.mamicode.com/style.css"?> <menu> <!--this is a menu--> <![CDATA[ with it was; ]]> <vegetables> <name> 蔬菜 </name> <vegetable> <cabbage>白菜</cabbage> <carrot>萝卜</carrot> </vegetable> </vegetables> <fruits> <name> 水果 </name> <fruit> <apple>苹果</apple> <banana>香蕉</banana> </fruit> </fruits> </menu>
XML的dtd约束
1.约束---> 编写来约束其书写规范
dtd文件:document type definition,写一个文档来约束xml文档的元素组成,规定其书写 .dtd后缀名;
2.元素类型:element
<!ELEMENT 约束元素名(子属性,,,)>
在XML文件中如何引入:
<!DOCTYPE 文档根节点 SYSTEM "dtd文件.dtd">
3.元素属性说明 attribute
<!ATTLIST 元素名
属性名 属性值类型 设置说明
属性名 属性值类型 设置说明
>
如:
<!ATTLIST 商品
类别 CDATA #REQUIRED
颜色 #IMPLIED
>
1.设置说明
REQUIRED 必须有此属性,
IMPLIED 可有可不有
FIXED 属性固定值
默认值
2.属性值类型:id ,enumerated ,entity, cdata
.............
实体定义:为一段内容创建一个别名,以后可以用此别名来在文档中代替原来内容,
引用实体:在xml文档中被引用,
<!ENTITY 实体名称 "引用实体内容">
参数实体:在dtd文件中被引用可以做到复用的作用
!ENTITY % 实体名称 "参数实体内容">
3.为了清除的看到DTD对有其引入的XML文件进行约束,可在MyEclipse自动检测
<?xml version="1.0" encoding="UTF-8"?> <!ENTITY % has "yes|no|true|false"> <!ENTITY blank "[ ]"> <!ENTITY % common-attributes "name CDATA #REQUIRED id ID #REQUIRED price CDATA #REQUIRED description CDATA #IMPLIED has (%has;) #REQUIRED" > <!ELEMENT goods (clothes*,shoes?)> <!ATTLIST goods shop-name CDATA #REQUIRED> <!ELEMENT clothes (jean*,shirt*)> <!ELEMENT jean (#PCDATA)> <!ELEMENT shirt (#PCDATA)> <!ATTLIST jean %common-attributes;> <!ATTLIST shirt %common-attributes;>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE goods SYSTEM "goods.dtd"> <goods shop-name="best"> <clothes> <jean has="no" name="jean1" price="111" id="jean1"></jean> <jean has="yes" name="33" price="33" id="jean2"></jean> <shirt has="yes" name="hehe" price="0.0" id="ee">␣</shirt> </clothes> </goods>
XML的schema约束
---详细见W3C
--是一种定义和描述xml文档结构和内容的模式语言,其出现是为了克服dtd的局限性;
1.VS DTD:
1 符合xml语法格式
2 Dom,sax XmlAPI很容易解析出XML Schema中的内容
3 约束强大,更多数据类型,还可以定义自己的数据类型
4 当不能定义实体,有自己的方式。
2.语法简介:命名空间的引入,、
1.simpleType元素 约束
元素:<xs:element name="ElementName" type="DataTypeOfElement">
---DataTypeOfElement
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
属性:<xs:attribute name="attributeName" type="attributeValueType">
属性值说明包括:默认default 指定fixed 必选required
元素限定:
限定的类型基于:
<xs:restriction base="xs:string/integer/boolean/date/time/decimal">
限定的内容or:maxInclusive minInclusive enumeration、,,,
<xs:minInclusive value="http://www.mamicode.com/0"/>
<xs:maxInclusive value="http://www.mamicode.com/110"/>
<xs:enumeration value="http://www.mamicode.com/apple"/>
<xs:enumeration value="http://www.mamicode.com/banana"/>
<xs:pattern value="http://www.mamicode.com/[A-Z][A-Z][A-Z]"/>
</xs:restriction>
类似实体的复用:
<xs:element name="name" type="nameValue"/>
<xs:simpleType name="nameValue">
<xs:restriction base="xs:string">
<xs:pattern value="http://www.mamicode.com/[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
2.复杂元素的 约束:合元素指包含其他元素及/或属性的 XML 元素。
<xs:complexType> 、、</xs:complexType>
<xs:sequence> </xs:sequence>
等等........
3.类型指示器:
Order:all choice Sequence
Occurrence:Maxoccur minoccur
Group:Group name attributeGroup name
3.简例:
<?xml version="1.0" encoding="UTF-8"?> <!-- xmlns="http://www.w3.org/2001/XMLSchema 来自外界的命名空间, 是否默认来确定是否有书写当前模式文件的前缀命名 targetNamespace="http://www.example.org/letter" 自身作为其他xml目标文件约束的命名空间 --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/letter" 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>
<?xml version="1.0" encoding="UTF-8"?> <!-- xmlns="default namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="{namespace} {location}" --> <note xmlns="http://www.example.org/letter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/letter letter.xsd" > <to>逗B</to> <from>猴子</from> <heading>呵呵</heading> <body>呵呵呵呵</body> </note>