日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

xml入门简介--两天学会xml

發布時間:2025/7/14 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xml入门简介--两天学会xml 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

  在很久以前,筆者曾見到過1000+頁的xml書,里面還有n多的概念,XSL,Xquery,讓人頭痛。無奈最近需要用到,所以在w3c惡補了一下。以下大致整理了一下相關概念,但是對XSL等派生語言沒有詳細的展開。

XML簡介

XML語法

Xml驗證

查看xml

xml轉化為html

xml解析器

工具

xml相關概念

參考文章

?

XML簡介

XML 指可擴展標記語言

XML 被設計用來傳輸和存儲數據

?

XML 與 HTML 的主要差異

XML 不是 HTML 的替代

XML 和 HTML 為不同的目的而設計:

XML 被設計為傳輸和存儲數據,其焦點是數據的內容。

HTML 被設計用來顯示數據,其焦點是數據的外觀。

?

什么是 XML?

XML 指可擴展標記語言(EXtensible Markup Language)

XML 是一種標記語言,很類似 HTML

XML 的設計宗旨是傳輸數據,而非顯示數據

XML 標簽沒有被預定義。您需要自行定義標簽。

XML 被設計為具有自我描述性(簡單地說就是XML以樹形結構展開,通過元素、子元素和屬性描述,讓人一看就懂)。

XML 是 W3C 的推薦標準

?

我覺得初學者可能會走近的誤區:

1. XML是不是HTML的取代者

不是。寫得好的html應該是一個well-formed的xml文檔,其他方面最好不要把他們放在一個水平線上比較

2. XML是不是數據庫的取代者

不是。

3. XML是不是...的取代者

都不是。

  這個結論可能聽上去很滑稽:XML是非常非常重要的東西,但它什么都取代不了。

  但這并不奇怪,有人把它比做ASCII標準,他們是一切一切的基礎,但并沒有(也不需要)取代什么。(但是就如同ASCII取代了一些沒有成大器的字符集定義,

  XML也會取代你在應用中自己定義的一些數據傳輸規范,但沒有什么特別主流的東西。)

  剛開始學XML(或者說沒開始學之前)的時候最愛問的一個問題肯定是:使用XML能給我帶來什么好處?

  我覺得從某種角度上說,使用XML有些象使用OO面向對象:

  -你可以用它,你也可以不用它。

  -如果你的應用非常簡單,用它不一定方便,沒準兒用了效果還會更差。

  -和其他實際東西比如數據庫,MTS,Web Server比起來,它更像是一個概念,一種方法

  -項目越大,它的發揮余地越大,作用越大。

  -一旦真正理解后,哪怕不用xml parser,也不妨礙你使用這個概念,如同可以拋開特定語言使用OO。

  - ......

?

XML的作用

作為一種通用的數據表示方法,用于數據的傳輸和存儲

xml有全套的操作這種結構的方法

?????? XSD,XSL,解析器,Xquery:數據查詢(及語句)

定義派生標簽語言:怎么定義,給出檢驗方法嗎?另外就是怎么學習xml的派生語言。

?

XML語法

實例:

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>

所有 XML 元素都須有關閉標簽

XML 標簽對大小寫敏感

XML 文檔必須有根元素

XML 的屬性值須加引號

?

層級結構:數據的種類可以參考json,無非是數組和對象,同樣可以用編譯原理中的遞歸定義來定義xml。在xml中,用標簽名相同的兄弟元素表示數組,用標簽名不同的兄弟元素表示對象的成員,從而表示了對象。

Xml元素的標簽名表示對象的類型(描述這個對象是什么)

XML 元素 vs. 屬性

<person sex="female">

? <firstname>Anna</firstname>

? <lastname>Smith</lastname>

</person>

?

<person>

? <sex>female</sex>

? <firstname>Anna</firstname>

? <lastname>Smith</lastname>

</person>

沒有什么規矩可以告訴我們什么時候該使用屬性,而什么時候該使用子元素。我的經驗是在 HTML 中,屬性用起來很便利,但是在 XML 中,您應該盡量避免使用屬性。如果信息感覺起來很像數據,那么請使用子元素吧。

因使用屬性而引起的一些問題:

屬性無法包含多重的值(元素可以)

屬性無法描述樹結構(元素可以)

屬性不易擴展(為未來的變化)

屬性難以閱讀和維護

元數據(有關數據的數據)應當存儲為屬性,而數據本身應當存儲為元素。

常用屬性:id,name,xmlns

--------------------------------------------xml“高級”語法------------------------------------------------------

命名空間:它的作用是防止命名沖突,可想而知,在日常的數據表示中用得不多。但在一些通用的語言定義中會用到,如xsl。

<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>

在某個標簽塊中用屬性xmlns聲明命名空間,如<h:table xmlns:h="http://www.w3.org/TR/html4/">,則在整個塊中都可以使用該命名空間。聲明的內容是指向一個描述該命名空間的URL。

CDATA:在一個塊內,用<![CDATA[ ……]]>把內容包住,使在該塊中可以不用xml實體。可見這個東西不太常用,主要在定義的語言中可能用到。

<script>

<![CDATA[

function matchwo(a,b)

{

if (a < b && a < 0) then

? {

? return 1;

? }

else

? {

? return 0;

? }

}

]]>

</script>

?XML 聲明:如<?xml version="1.0" encoding="ISO-8859-1"?>,它不滿足xml語法,不屬于xml的部分。

編碼屬性(encoding)應當被指定為文檔被保存時所使用的編碼。我最好的避免錯誤的建議是:

使用支持編碼的編輯器

確定編輯器使用的編碼

在您的 XML 文檔中使用相同的編碼屬性

?

Xml驗證

合法的 XML 文檔是“形式良好”(符合一般的xml語法規則)的 XML 文檔,同樣遵守文檔類型定義 (DTD) 的語法規則:

***Note.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE note SYSTEM "Note.dtd">

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>?

***Note.dtd

<!DOCTYPE note [

? <!ELEMENT note (to,from,heading,body)>

? <!ELEMENT to????? (#PCDATA)>

? <!ELEMENT from??? (#PCDATA)>

? <!ELEMENT heading (#PCDATA)>

? <!ELEMENT body??? (#PCDATA)>

]>

W3C 支持一種DTD代替者,它名為XML Schema,它的語法基于XML

<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>

?

查看xml

Xml也能在瀏覽器中顯示(放在鏈接里),可見這個主題并不常用。

但是顯示方案有一定的瀏覽器差異性,當xml有語法錯誤時,瀏覽器還會報錯

解決方案1:用css定制樣式

***cd.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/css" href="cd_catalog.css"?>

<CATALOG>

<CD>

<TITLE>Empire Burlesque</TITLE>

<ARTIST>Bob Dylan</ARTIST>

<COUNTRY>USA</COUNTRY>

<COMPANY>Columbia</COMPANY>

<PRICE>10.90</PRICE>

<YEAR>1985</YEAR>

</CD>

</CATALOG>

***cd_catalog.css

CATALOG

{

background-color: #ffffff;

width: 100%;

}

CD

{

display: block;

margin-bottom: 30pt;

margin-left: 0;

}

TITLE

{

color: #FF0000;

font-size: 20pt;

}

ARTIST

{

color: #0000FF;

font-size: 20pt;

}

COUNTRY,PRICE,YEAR,COMPANY

{

display: block;

color: #000000;

margin-left: 20pt;

}

很容易看懂,本來就有自定義的html標簽

?????? CSS 格式化 XML 不是常用的方法,更不能代表 XML 文檔樣式化的未來。W3C 推薦使用 XSLT。

解決方案2:XSLT, 是首選的 XML 樣式表語言。

***breakfast.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/xsl" href="simple.xsl"?>

<breakfast_menu>

? <food>

??? <name>Belgian Waffles</name>

??? <price>$5.95</price>

??? <description>

?????? two of our famous Belgian Waffles

??? </description>

??? <calories>650</calories>

? </food>

</breakfast_menu>

***simple.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Edited with XML Spy v2007 (http://www.altova.com) -->

<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">

? <body style="font-family:Arial,helvetica,sans-serif;font-size:12pt;

??????? background-color:#EEEEEE">

??? <xsl:for-each select="breakfast_menu/food">

????? <div style="background-color:teal;color:white;padding:4px">

??????? <span style="font-weight:bold;color:white">

??????? <xsl:value-of select="name"/></span>

??????? - <xsl:value-of select="price"/>

????? </div>

????? <div style="margin-left:20px;margin-bottom:1em;font-size:10pt">

??????? <xsl:value-of select="description"/>

??????? <span style="font-style:italic">

????????? (<xsl:value-of select="calories"/> calories per serving)

??????? </span>

???? ?</div>

??? </xsl:for-each>

? </body>

</html>

用過html模板后就覺得這不難看懂,主要是一些標簽替換

XSLT 的原理是是在瀏覽器顯示 XML 文件之前,先把它轉換為 HTML。由于XSLT 轉換是由瀏覽器完成的,所以減少了瀏覽器差異性問題。

?

xml轉化為html

相關的xslt庫

先轉化為dom對象,再用程序完成

?

xml解析器

xml解析器會把把XML(文件或字符串)轉換為XML DOM對象

什么是dom對象,怎么轉換,看看js就知道了。

xml文檔的讀取有跨域問題

?

php與xml

php通過header("Content-type:text/xml");可以用echo向瀏覽器發送xml。

要用程序把數據庫數據轉換成xml,要自己寫一些代碼

?

工具

Xml驗證器:http://www.w3school.com.cn/xml/xml_validator.asp

?

概念

XML 聲明:如<?xml version="1.0" encoding="ISO-8859-1"?>

CDATA:在一個塊內,用<![CDATA[ ……]]>把內容包住,使在該塊中可以不用xml實體。

DTD:文檔類型定義 (document type definition)

XSD(XML Schema Definition):即XML Schema ,是W3C 支持一種DTD代替者,它的語法基于XML 。

XSL :指擴展樣式表語言(EXtensible?Stylesheet?Language),它的初衷是給xml提供樣式顯示。由XSLT、XPath 以及 XSL-FO組成。XSLT的主旨更一般化,指可將一種 XML 文檔轉換為另外一種 XML 文檔。口頭中,常把XSLT稱為XLS。

XSLT:指 XSL 轉換(XSL Transformations),?可將一種 XML 文檔轉換為另外一種 XML 文檔,其中一種特例是把XML轉換成HTML輸出。

Xpath:Xpath是一門在 XML 文檔中查找信息的語言,在 XML 文檔中通過元素和屬性進行導航。?XSLT使用 XPath 在 XML 文檔中進行導航,在XSLT中,除開導航,就只剩下怎么替換的問題了。

Xquery:一種xml的查詢語言,Xquery之于xml就像sql之于數據庫。XQuery是基于XPath上的,單獨的 XPath 位置路徑本身就是有效的 Xquery。

?

參考文章

w3c:http://www.w3school.com.cn/xml/xml_syntax.asp

XML入門之十一問答

http://developer.51cto.com/art/200512/15385.htm

通過PHP操作XML入門

http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0421/2884.html

XML是什么,它可以做什么?——寫給XML入門者 :

http://blog.csdn.net/cds27/article/details/743409

XML是什么,它可以做什么:http://blog.sina.com.cn/s/blog_5c012cc00100cehm.html

給xml的初學者

http://www.why.com.cn/epublish/node625/node1202/node1209/userobject7ai12694.html

相關技術http://www.w3school.com.cn/xml/xml_technologies.asp

轉載于:https://www.cnblogs.com/deliver/p/3300634.html

總結

以上是生活随笔為你收集整理的xml入门简介--两天学会xml的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。