脚本宝典收集整理的这篇文章主要介绍了XML学习,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
xml值可扩展标记语言(eXtensible Markup Language)
xml被设计用来传输和存储数据
xml可以是有效的
其实HTML与XML之间没有非常必然的联系,XML不是要替换HTML,实际上XML可以视作对HTML的补充
XML和HTML 的目标不同:HTML 的设计目标是显示数据并集中于数据外观,而XML的设计目标是描述数据并集中于数据的内容
与HTML相似,XML不进行任何操作
与 HTML 不同,XML 标记由架构或文档的作者定义,并且是无限制的。HTML 标记则是预定义的;HTML 作者只能使用当前 HTML 标准所支持的标记
XML是被设计用来描述数据的,HTML是被设计用来显示数据的。
XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶",第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(encoding="utf-8"),一个XML有且只有一个根,所有的元素都可以有子元素,父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹),所有的元素都可以有文本内容和属性。
示例:
<!--描述一个书的信息-->
<?xml version="1.0" encoding="utf-8"?>
<books>
<title>XML</title>
<author>钟文涛</author>
<price>12.6</price>
</books>
所有的 XML 元素都必须有一个关闭标签
XML 标签对大小写敏感
必须正确嵌套
文档必须有根元素
属性值必须加引号
实体引用
<!--< < > > & & &apos ' " " -->
因为xml在浏览器解析器解析的时候,向< >这些都是会被解析的
所以你就想单纯输出一段文本 你就用以上实体代替
示例:
你想输出
<div>XML</div>
你就改成
< div > xml < /div &g
XML 中的注释
<!-- This is a comment -->
在 XML 中,空格会被保留
PCDATA
parsed character data:是会被解析器解析的文本
CDATA
character data:是不会被解析器解析的文本,CDATA是在XML文档里面使用的关键字,用来告诉浏览器,这部分内容不用解 析,是给其他程序用的,比如js代码等。CDATA 部分由 "" 结束:
拥有正确的语法的XML被称为“格式良好的xml文件”
符合模式定义的XMl文件是有效的xml文件(同时它也是格式良好的xml文件)
为什么要使用验证器?
DTD 的目的是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构,DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
DTD定义的两种类型 注意:区别大小写!
内部的DOCTYPE声明
<!DOCTYPE root-element [element-declarations]>
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
<!ELEMENT books (book*)>
<!ELEMENT book (title, price, (publisher | author))>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT author (#PCDATA)>
]>
<books>
<book>
<title>XML</title>
<price>99</price>
<publisher>dddddd</publisher>
</book>
</books>
外部文档声明
<!DOCTYPE root-element SYSTEM "filename">
示例:
<!--a.dtd-->
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book*)>
<!ELEMENT book (title, price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!--a.xml-->
<!DOCTYPE books SYSTEM 'a.dtd'>
<books>
<book>
<title/>
<price/>
</book>
</books>
DTD语法规则—元素
<!ELEMENT element-name category>
category
空元素: EMPTY
PCDATA: (#PCDATA)
任何内容: ANY
带有子元素的元素: (child1,child2,...)
出现一次的子元素: (child-name)
至少出现一次的子元素: (child-name+)
出现零次或多次的元素: (child-name*)
出现零次或一次的元素: (child-name?)
或: (child1 | child2 | ...)
DTD语法规则—属性
<!ATTLIST element-name attribute-name attribute-type attribute-value>
element-name 元素名
attribute-name 属性名
attribute-type 属性类型
attribute-value 属性默认值
属性类型
类型 | 描述 |
---|---|
CDATA | 值为字符数据 (character data) |
(en1|en2|..) | 此值是枚举列表中的一个值 |
ID | 值为唯一的 id |
IDREF | 值为另外一个元素的 id |
IDREFS | 值为其他 id 的列表 |
NMTOKEN | 值为合法的 XML 名称 |
NMTOKENS | 值为合法的 XML 名称的列表 |
ENTITY | 值是一个实体 |
ENTITIES | 值是一个实体列表 |
NOTATION | 此值是符号的名称 |
xml: | 值是一个预定义的 XML 值 |
属性值
值 | 解释 |
---|---|
值 | 属性的默认值 |
#REQUIRED | 属性值是必需的 |
#IMPLIED | 属性不是必需的 |
#FIXED value | 属性值是固定的 |
示例:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT books (book*)>
<!ELEMENT book (title, price, (publisher | author))>
<!ATTLIST book id ID #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ATTLIST title subtitle CDATA #IMPLIED>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price unit (人民币|美元) "人民币">
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT author (#PCDATA)>
XML Schema是DTD的升级版
优点:
1. schema基本结构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.trkj.com"
xmlns="http://www.trkj.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
</xs:schema>
qualified: 使用命名空间
unqualified: 不使用命名空间
2. 语法规则—元素
<xs:element name=“元素名” type=“元素类型“ default=”默认值” fixed=“固定值" />
常用类型:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
**3. 语法规则—属性 **
<!--默认没有use属性,表示可有可无,”required”表示属性一定要有-->
<xs:attribute name=“属性名” type=“类型““default=”默认值” fixed=“固定值“ use=“required|optional” />
常用属性类型:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
4. Schema语法规则 – complexType 复杂类型
complexType 元素用于定义复杂元素,复杂元素是指包含其他元素及/或属性的 XML 元素。
四种类型的复杂元素:
注意: 上述元素均可包含属性!
复杂类型元素--空元素
空元素,空元素不能包含内容,只能含有属性。
示例:
<xs:element name="address">
<xs:complexType/> 或
<xs:complexType></xs:complexType>
</xs:element>
或
<xs:element name="product">
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
复杂类型元素--仅包含子元素
仅包含子元素的复杂类型元素是只能包含其他元素的元素
示例:
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
xs:sequence 表示书写必须按顺序
复杂类型元素--仅包含文本
仅包含文本,仅含文本的复杂元素可包含文本和属性,并且必须在 simpleContent 元素内定义扩展或限定
示例:
<xs:element name="phone">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="area" type="xs:integer"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
复杂类型元素--混合元素(mixed)
如果元素即有标签体文本,又有属性,则称之为mixed元素
示例:
<xs:element name="letter">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
为了使字符数据可以出现在 "letter" 的子元素之间,mixed 属性必须被设置为 "true"。<xs:sequence> 标签 (name、orderid ) 意味着被定义的元素必须依次出现在 "letter" 元素内部。
<letter>
Dear Mr.<name>John Smith</name>.
Your order <orderid>1032</orderid>
will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>
5. Schema语法规则 – simpleType 简单类型
规定与约束具有纯文本内容的元素(不含子元素)或属性的值,事实上schema中所有的内置类型都是simpleType
restriction 元素定义对 simpleType、simpleContent 或 complexContent元素可接受的值。
<xs:element name="level">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="A"></xs:enumeration>
<xs:enumeration value="B"></xs:enumeration>
<xs:enumeration value="C"></xs:enumeration>
<xs:enumeration value="D"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:element>
6. simpleType数据类型的限定类型
限定 | 描述 |
---|---|
enumeration | 定义可接受值的一个列表 |
fractionDigits | 定义所允许的最大的小数位数。必须大于等于0。 |
length | 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。 |
maxExclusive | 定义数值的上限。所允许的值必须小于此值。 |
maxInclusive | 定义数值的上限。所允许的值必须小于或等于此值。 |
maxLength | 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。 |
minExclusive | 定义数值的下限。所允许的值必需大于此值。 |
minInclusive | 定义数值的下限。所允许的值必需大于或等于此值。 |
minLength | 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。 |
pattern | 定义可接受的字符的精确序列。 |
totalDigits | 定义所允许的阿拉伯数字的精确位数。必须大于0。 |
whiteSpace | 定义空白字符(换行、回车、空格以及制表符)的处理方式。 |
7. schema 指示器
如需使某个元素的出现次数不受限制,必须使用xs:sequence或xs:choice,并且使用 maxOccurs="unbounded" 这个声明
以上是脚本宝典为你收集整理的XML学习全部内容,希望文章能够帮你解决XML学习所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。