亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

XML學習筆記(三)進階篇

2024-09-05 20:54:45
字體:
來源:轉載
供稿:網友

一、NameSpaces(命名空間)

說到NameSpaces我們很快會聯想到.Net的命名空間。是的,XML是可擴展的是由開發者定義的,所以相同的標記會有不同的含義。如果將這些標記混合在一起,XmlParser無法去識別他們之間的區別。我們嘗試從不同的XML應用讀取XML時也會引起混亂。

解決的直接的思路是使用一個前綴??梢栽诿總€標記前面加一個前綴作區分。而當我們使用前綴的時候,我們必須為前綴做一個Namespaces的聲明調用。Namespaces是作為一個xmlns的Attribute調用的。語法如下xmlns:prefix="URI"。例子:

<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
 

為一個元素定義了Namespace則它的所有的子元素都會使用相同的Namespace。因此Namespace可以定義在root元素中。

<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
一般我們使用URL作為NameSpace。但是Parser并不會從中讀取任何信息。使用URL只是為了NameSpace的唯一性。當然,人們可以通過URL提供的網址尋找相關的信息。

為了簡化前綴,我們可以定義默認的命名空間(Default Namespaces)。語法是:xmlns="namespaceURI"。例子:
 

<table xmlns="http://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
 

一個說明Namespaces的最好例子是XSLT。XSLT是一種XML語言。XSLT用來把XML文件轉換成另一種格式,如HTML。下面是一個XSLT文件,你可以看到大部分是HTML標記,而同時有一部分標記使用xsl為前綴的標記。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
 

二、XML CDATA

在XML文檔中的所有Text都會被Parser進行分析,除了在CDATA中的文本。
PCDATA:Parsed Character Data,是能夠被Parser分析的XML文本數據。
CDATA:(Unparsed)Character Data,是不為Parser所分析的XML文本數據。

在CDATA可以包含一些可能會引起錯誤的符號。例如如果一個Element包含有“<”和“>”將會引起Parser的錯誤。因此可以將它包含在CDATA中。CDATA以“<![CDATA[”開始;以“]]>”結束。

下面是一個例子:
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>
 

注意:
CDATA的文本中不能包含有“]]>”字符串。而結束標記“]]>”符號之間不能包含有空格。

三、XML編碼(Encoding)

XML文檔可以包含非ASCII的字符。例如挪威語、法語之中的符號。這時為了避免錯誤,應該指定XML文檔的編碼,并且以Unicode的方式保存XML文檔。同時應該在XML文檔中使用“encoding”屬性予以說明。
<?xml version="1.0" encoding="UTF-16"?>

XML編碼錯誤(Encoding Errors):在加載XML文檔的時候,常見的XML編碼錯誤有兩種:

“An invalid character was found in text content.”
產生原因:XML文檔包括了非ASCII字符,并且文件以單字節(single-byte)ANSI或ASCII方式保存,而且沒有在XML中指定編碼編碼。

“Switch from current encoding to specified encoding not supported”
產生原因1:XML文檔以雙字節(double-byte)Unicode或UTF-16的方式保存,但是卻制定了單字節的編碼方式(如Windows-1252, ISO-8859-1, UTF-8等)。
產生原因2:以單字節的ANSI或ASCII的方式保存文檔,但卻在XML文件中指定編碼方式為UTF-16。

Windows記事本: 很多時,我們會用WindowsNotepad編輯XML文檔。這里要注意的是: WindowsNotepad默認將文檔以單字節ANSI(ASCII)的方式保存。 如果要保存為雙字節的Unicode(UTF-16),則要使用“另存為”保存。

為了避免錯誤,關于XML Encoding的建議是:
  • 總是在XML中使用encoding屬性。
  • 使用一個支持編碼的編輯器。
  • 確認你知道編輯器的編碼方式。
  • 使你的encoding屬性的值符合編碼。

四、XML 服務器

和HTML一樣XML文件是純文本。一個標準的Web服務器和以很方便的存儲和生成XML文件。所以很多的Web服務器都有提供操作XML的API。具體各種不同的技術是如何實現的,就不能在這里說明了。

五、XML DOM 進級

詳細的DOM學習還是要參考XML DOM指南和手冊。這里列出常見的操作。
獲取元素的值
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
txt=x.nodeValue;

獲取屬性的值
txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");

改變元素的值
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Cooking";

改變屬性的值
x=xmlDoc.getElementsByTagName("book");
for(i=0;i<x.length;i++)
{
x[i].setAttribute("edition","first");
}

創建一個元素
newel=xmlDoc.createElement("edition");
newtext=xmlDoc.createTextNode("First");
newel.appendChild(newtext);x=xmlDoc.getElementsByTagName("book");
x[0].appendChild(newel);

移除一個元素
x=xmlDoc.getElementsByTagName("book")[0];
x.removeChild(x.childNodes[0]);

六、XML要避免的技術

Internet Explorer XML Data Islands
What is it?
這是一種將XML數據嵌入到HTML頁面的技術。
Why avoid it?
因為這時IE的特有技術,其他的Browser不支持。
What to use instead?
應該使用JavaScript和XML DOM在HTML中展示XML數據。

Internet Explorer Behaviors
What is it?
IE5引入了動作的概念(Behaviors)。Behaviors是結合CSS為XML(或HTML)元素添加動作樣式的技術。
Why avoid it?
只有IE支持
What to use instead?
同樣應該使用JavaScript和XML DOM進行實現。

因為指南已經叫我們避免使用這兩種技術,就沒必要深入了解他們了。

七、XML 相關技術

下面的連接中列出了XML相關的技術。http://www.w3schools.com/xml/xml_technologies.asp

八、XML的實際應用

XML News
XMLNews是一種交換新聞和信息的規范。
 

XML Weather Service
National Oceanic and Atmospheric Administration是其中一個天氣服務的例子。

九、XML編輯器(Editors)

XML是純文本的,所以使用一般的文本編輯器就可以編輯XML了。但是使用一個專業的XML編輯器,比使用記事本(Notepad)有更多的優點。

為什么不用Notepad?是的大多數的OS都有Notepad。很容易使用它來進行HTML、XML、CSS的編輯。但是請盡量不要使用Notepad,因為Notepad并不知道你在編輯的是HTML、XML或CSS文件,它也無法,不會提供幫助。

為什么使用XML編輯器?專業的XML編輯器可以更好的保證無錯的文檔。可以根據DTD或Schema,保證XML的有效性(Validate)。我們應該使用提供以下功能的專業XML編輯器:

  • 能夠自動添加閉合標記。
  • 強制你寫有效XML。
  • 能根據DTD或Schema驗證XML。
  • 為你的XML按照語法添加顏色區別。

十、下一步應該學習什么?

下一步的學習應該是XML DOM和XSLT。如果你比較關心XML的有效性驗證,那么可以學習DTD和Schema。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产99久久精品一区二区 夜夜躁日日躁| 国产脚交av在线一区二区| 中文字幕欧美日韩| 欧美性极品xxxx做受| 亚洲国产精品人久久电影| 日本道色综合久久影院| 国产欧美日韩精品专区| 国产精品免费视频久久久| 亚洲第一区在线观看| 亚洲最新中文字幕| 狠狠久久五月精品中文字幕| 欧美激情高清视频| 日韩免费不卡av| 在线观看日韩www视频免费| 亚洲精品av在线| 伊人精品在线观看| 疯狂蹂躏欧美一区二区精品| 亚洲男人的天堂在线| 欧美激情第6页| 2018中文字幕一区二区三区| 亚洲国产精品人久久电影| 亚洲天堂av女优| yellow中文字幕久久| www.日韩视频| 这里只有精品久久| 国产免费一区视频观看免费| 欧美精品福利视频| 日本精品久久久久影院| 国产欧美最新羞羞视频在线观看| 国产成人综合精品在线| 久久这里只有精品视频首页| 在线播放日韩精品| 粗暴蹂躏中文一区二区三区| 欧美寡妇偷汉性猛交| 亚洲品质视频自拍网| 国产精品v日韩精品| 国产999精品视频| 精品福利视频导航| 欧美成人性生活| 懂色av影视一区二区三区| 精品欧美国产一区二区三区| 日韩欧美黄色动漫| 国产精品男女猛烈高潮激情| 日韩免费观看av| 日本国产一区二区三区| 亚洲日韩中文字幕| 91福利视频网| 精品国产网站地址| 欧美肥婆姓交大片| 国产精品第3页| 亚洲国内精品视频| 97成人超碰免| 国内精品免费午夜毛片| 成人中文字幕在线观看| 欧洲亚洲免费视频| 亚洲精品女av网站| 国产成人极品视频| 欧美一级bbbbb性bbbb喷潮片| 久久影视电视剧免费网站清宫辞电视| 国产婷婷色综合av蜜臀av| 久久人人爽人人爽爽久久| 欧美日韩一区二区三区| 丝袜美腿精品国产二区| 国产视频丨精品|在线观看| 国产精品久久久久久五月尺| 国产精品日韩av| 日韩在线一区二区三区免费视频| 97精品国产91久久久久久| 日产精品99久久久久久| 日韩精品视频在线观看网址| 成人免费观看a| 亚州国产精品久久久| 在线观看不卡av| 亚洲人成电影在线| yellow中文字幕久久| 国产精品扒开腿做爽爽爽男男| 亚洲国产成人精品久久| 久久这里只有精品视频首页| 亚洲一区二区三区在线免费观看| 日韩午夜在线视频| 在线观看视频99| 日韩av电影在线网| 久久天天躁狠狠躁夜夜av| 欧美专区第一页| 日韩视频在线一区| 亚洲人成电影网站色…| 亚洲精品一区av在线播放| 亚洲欧美在线第一页| 久久在线观看视频| 亚洲男人天天操| 国模视频一区二区| 国产精品女主播视频| 亚洲人午夜精品免费| 菠萝蜜影院一区二区免费| 奇米成人av国产一区二区三区| 久久视频在线观看免费| 国产精品久久久久高潮| 91精品视频专区| 成人欧美在线观看| 久久久久久中文字幕| 久久久精品一区二区| 精品久久国产精品| 国产精品久久一区主播| 狠狠久久五月精品中文字幕| 亚洲一区二区国产| 欧洲成人在线视频| 久久久久国产精品免费| 欧美在线播放视频| 日韩欧美第一页| 久久亚洲精品视频| www.久久撸.com| 成人自拍性视频| 亚洲人成在线观看网站高清| 亚洲人a成www在线影院| 日韩中文字幕亚洲| 久久久女人电视剧免费播放下载| 国产成一区二区| 亚洲精品v天堂中文字幕| 欧美成人在线免费视频| 精品国产91乱高清在线观看| 欧美日韩精品中文字幕| 一区二区成人av| 性色av一区二区三区在线观看| 欧美人交a欧美精品| 欧美性xxxxx极品娇小| 亚洲欧美日韩精品久久奇米色影视| 亚洲香蕉成人av网站在线观看| 中日韩美女免费视频网站在线观看| 亚洲最新av在线| 欧美wwwxxxx| 久久色免费在线视频| 日本久久中文字幕| 日韩中文字幕久久| 国产精品成人观看视频国产奇米| 77777少妇光屁股久久一区| 日韩成人在线网站| 欧美巨大黑人极品精男| 国产精品福利片| 7777kkkk成人观看| 国产精品久久久久久婷婷天堂| 欧美高清视频一区二区| 日韩欧美亚洲一二三区| 热re91久久精品国99热蜜臀| 国产成人精品优优av| 欧美国产中文字幕| 亚洲电影免费观看高清完整版在线| 国产在线久久久| 免费91在线视频| 综合欧美国产视频二区| 成人福利在线视频| 欧美日韩国产成人| 美日韩精品免费视频| 成人网在线观看| 亚洲曰本av电影| 日韩电影免费在线观看中文字幕| 国产97人人超碰caoprom| 亚洲人成电影网站色www| 欧美激情影音先锋| 午夜免费久久久久| 亚洲国产天堂网精品网站| 亚洲理论片在线观看| 国产精品欧美激情| 日韩精品中文字幕在线| 亚洲激情视频在线|