博客 / 詳情

返回

Y 分鐘速成 XML

源代碼下載: learnxml-cn.xml

XML 是一種標記語言,被設計用來存儲數據和傳輸數據。

不像 HTML , XML 不指定怎樣顯示或格式化數據,只是攜帶它。

  • XML 語法
<!-- XML中的註解像這樣 -->

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="WEB">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

<!-- 上面是一個典型的XML文件。
  它以一個聲明開始,通知一些元數據(自選的)
  
  XML使用一個樹的結構。上面的文件中,根節點是'bookstore',它有三個孩子節點,
  所有的'books'。那些節點有更多的孩子節點,等等。。。
  
  節點用開放/關閉標籤創建, 並且孩子就是在開發和關閉標籤之間的節點。-->



<!-- XML 攜帶兩類信息:
  1 - 屬性 -> 那是關於一個元素的元數據。
      通常,XML解析器使用這些信息去正確地存儲數據。
      它通過在開放標籤裏出現在插入語中來表示。
  2 - 元素 -> 那是純數據。
      那就是解析器將從XML文件提取的東西。
      元素出現在開放和關閉標籤之間,沒插入語。-->
      
  
<!-- 下面, 一個有兩個屬性的元素-->
<file type="gif" id="4293">computer.gif</file>

  • 良好格式的文件 x 驗證

一個 XML 文件是良好格式的如果它是語法正確的。
但是, 使用文件定義,比如 DTD 和 XML 概要,在文件中插入更多的限制是可能的。

一個遵守一個文件定義的 XML 文件被叫做有效的,對於那個文件來説。

有了這個工具,你能夠在應用邏輯之外檢查 XML 數據。

<!-- 下面, 你能夠看到一個簡化版本的增加了DTD定義的bookstore文件。-->

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Bookstore.dtd">
<bookstore>
  <book category="COOKING">
    <title >Everyday Italian</title>
    <price>30.00</price>
  </book>
</bookstore>

<!-- 這個DTD可能是像這樣的:-->

<!DOCTYPE note
[
<!ELEMENT bookstore (book+)>
<!ELEMENT book (title,price)>
<!ATTLIST book category CDATA "Literature">
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
]>


<!-- 這個DTD以一個聲明開始。
  接下來, 根節點被聲明, 它需要一個或多個孩子節點'book'。 
  每個 'book' 應該準確包含一個 'title' 和 'price' 和
  一個被叫做'category'的缺省值為"Literature"的屬性。
  這個'title' 和 'price'節點包含一個解析過的字符數據。-->

<!-- 這個DTD可以在XML文件中本身被聲明。-->

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note
[
<!ELEMENT bookstore (book+)>
<!ELEMENT book (title,price)>
<!ATTLIST book category CDATA "Literature">
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
]>

<bookstore>
  <book category="COOKING">
    <title >Everyday Italian</title>
    <price>30.00</price>
  </book>
</bookstore>

有建議?或者發現什麼錯誤?在Github上開一個 issue ,或者發起 pull request !


原著 João Farias ,並由0個好心人修改。
© 2022 João Farias
Translated by: Zach Zhang
本作品採用 CC BY-SA 3.0 協議進行許可。

user avatar shaochuancs 頭像 uncletong_doge 頭像 mulander 頭像
3 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.