1、什么是xml?
XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
2、xml历史
说起xml很多人会想到html,那么html与xml的关系是什么呢?其实xml与html是表亲的关系,xml并不能完全替代html,xml与html是为不同的目的而设计的,xml的核心是包涵和传输数据,html的核心是显示数据。
3、xml语法
在此文件中的第一行即是文件序言,文件的其余部分都是属于文件主体,XML 文件的内容信息存放在此。我们可以看到,文件主体是由开始的〈参考资料〉和结束的〈/参考资料〉控制标记组成,这个称为 XML 文件的“根元素”;〈书籍〉是作为直属于根元素下的“子元素”;在〈书籍〉下又有〈名称〉、〈作者〉、〈价格〉这些子元素。货币单位〈价格〉元素中的一个“属性”,“人民币”则是“属性值”。
4、DTD
a、 概述:
我们看到,在 XML 文件中,用的大多都是自定义的标记。但是大家考虑一下,如果两个同行业的公司A和B要用XML文件相互交换数据,A 公司用 〈价格〉标记来表示他们产品的价格信息,而 B 公司可能用〈售价〉来表示价格信息。如果一个 XML 应用程序来读取他们各自的 XML 文件中的信息时,如果它只知道〈价格〉标记里表示的是价格信息,那么 B 公司的价格信息就读不出来,必将产生错误。显然,对于想利用
XML 文件来交换信息的实体来说,他们之间必须有 一个约定——即编写 XML 文件可以用哪些标记,母元素中能够包括哪些子元素,各个元素出现的顺序,元素中的属性怎样定义等。这样他们在用 XML 交换数据时才能够畅通无阻。这种约定称为DTD(Document Type Definition,文档格式定义)。可以把 DTD看作编写 XML 文件的模板。
b、分类
DTD 分为外部 DTD(在XML 文件中调用另外已经编辑好的 DTD)和内部 DTD(在 XML 文件中直接设定 DTD)两种。
c、语法
<span style="font-size:18px;"><!ELEMENT element-name element-definition〉</span>
〈!ELEMENT:表示开始元素设置,注意此处 ELEMENT 关键字是大写。
element-name:表示要设置的元素的名称。
element-definition:指明要对此元素进行怎样的定义,就是说〈元素〉...〈/元素〉之间能够包含什么内容,是其他元素还是一般性的文字。
d、包涵符号
符号 | 代表标记出现的次数 |
? | 不出现或只出现异常 |
* | 不出现或可能出现多次 |
+ | 必须出现一次以上 |
无符号 | 只能出现一次 |
ANY | 随便啦 |
e、举例
<span style="font-size:18px;">〈!ELEMENT 参考资料(书籍 ,报纸+,杂志?,网站)〉</span>
这个元素设定什么了”参考资料“这个元素,并且它作为“书籍”、“报纸”、“杂志”、“网站”的父元素,而且“名称”、“作者”、“价格”这些标记在 XML 文件中必须以上面排列的顺序出现,“书籍”标记在 XML 文件中可以不出现或者出现多次;“报纸”标记必须出现一次以上;“杂志”标记可以不出现或只出现一次;而“网站”标记必须出现而且只能出现一次。
5、Schema
a、概述:
DTD 的语法相当复杂,并且它不符合 XML 文件的标准,自成一个体系。上面的介绍也仅仅是作了一个简介,另外一个代替 DTD 的就是 W3C 定义的 Schema,Schema 相对于 DTD 的明显好处是 XML Schema 文档本身也是 XML 文档,而不是像 DTD 一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理 XMLSchema 和其他 XML 信息,而不必专门为 Schema 使用特殊工具。Schema
简单易懂,懂得 XML语法、规则的人都可以立刻理解它。Schema 的概念提出已久,但 W3C 标准最近才出来,相应的应用支持尚未完善,但采用 Schema 已成为 XML 发展的一个趋势。
Schema会在将来取代DTD!
b、举例(Schema和xml语法结构差不多,大家看个例子就会明白了。)
---Schema文档
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="email"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"></xs:element> <xs:element name="from" type="xs:string"></xs:element> <xs:element name="title" type="xs:string"></xs:element> <xs:element name="body" type="xs:string"></xs:element> <xs:element name ="date" type="xs:date"></xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </span>
----xml调用
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?> <email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XMLSchema.xsd"> <to>[email protected]</to> <from>[email protected]</from> <title>haha</title> <body>i love you forever</body> <date>2014-12-22</date> </email></span>