XML簡明教學(5)

黄舟
發布: 2017-02-18 15:31:19
原創
1390 人瀏覽過

目錄


發展歷史

XML和HTML對比之可擴展

XML驗證之DTD

XML

名稱空間XML

語法結構DOM4J

一個一個XML

文件中可以包含許多元素與屬性,當我們使用他人的XML

文件或使用多個校驗文件(DTD或是使用多個校驗文件(


DTD


或Sch

相同的元素或屬性名稱,而這些元素或屬性的意義是不一樣的,類似於

java當中很多類的類名是相同的而這些類的具體作用卻是不盡相同的,於是在Java領域人們就引入了包的概念,不同包下的相同名稱的類的作用是不一樣的,這樣就有效的區分了同名的類。相類似的在XML中引入名稱空間也是為了解決名稱重複的問題。先看下面的例子

<?xml version="1.0" encoding="gb2312" ?>
<books>
	<book>
		<title>JSP深入编程</title>
		<author>
			<name>张三</name>
			<title>作家</title>
		</author>
	</book>
	<book>
		<title>XML从入门到精通</title>
		<author>
			<name>李四</name>
			<title>教师</title>
		</author>
	</book>
</books>
登入後複製
這是一個關於圖書的格式書名又用來表示作者的頭銜,兩個相同名稱的元素卻有不同的意義。這使得XML解析器閱讀起來非常費解,也無法正確的進行

XML

驗證。為解決這個問題我們採用名稱空間的方式區分相同的元素。在此之前我們先介紹關於

XML


名稱空間的定義方式:

<元素名 xmlns:prefixname="URI">

元素名是指在该元素上声明命名空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素内容中的所有元素及属性prefixname是名称空间的前缀,往往URI比较长所以可以用prefixname来代替URI比如下面的例子

<hr xmlns:hr="http://blog.csdn.net/beijiguangyong">
登入後複製


上面的句子声明了一个名称空间,它的名字是//m.sbmmt.com/。一般而言这个名称很长,于是就用了hr来表示,作为该名称空间下的元素或者属性可以其在前面加上前缀hr。例如就表示employee元素属于此命名空间下。所以上面的那个拥有title重复属性的xml为了区分歧义可以写成下面这样

<?xml version="1.0" encoding="utf-8" ?>
<books xmlns:people="http://blog.csdn.net/beijiguangyong">
	<book>
		<title>JSP深入编程</title>
		<author>
			<name>张三</name>
			<title>作家</title>
		</author>
	</book>
	<book>
		<title>XML从入门到精通</title>
		<author>
			<people:name>李四</name>
			<people:title>教师</title>
		</author>
	</book>
</books>
登入後複製



其中people是名称空间//m.sbmmt.com/的前缀,用于表示相应的元素是属于该命名空间下的。对于上面的XML而言解析器就很容易区分people:titletitle的不同。

还有另一种定义名称空间的方式:

<元素名 xmlns="URI">

这种声明形式没有给出名称空间的前缀名,我们可以认为URI所标识的是一个默认的名称空间。例如


表明了一个默认的名称空间,除非元素中有其他的命名空间进行覆盖,否则hr元素及其内容中所有的没有前缀的元素都属于//m.sbmmt.com/所标识的名称空间

了解了名稱空間之後就可以更輕鬆的學習用Schema驗證XML的正確性了。

 

 以上就是XML簡明教學(5) 的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!