2016-03-25 67 views
2

w3schools.com上,有一些advantages/strengths listed about XML Schemas瞭解XML解析器的定義

什麼是以下幾點意思:

您可以使用XML解析器解析Schema文件

+3

作者正試圖指出一個事實,即由於模式文件基本上是一個xml,所以您不需要任何特殊的東西來解析模式文件。你每天都會使用像薩克森這樣的XML解析器。 –

+0

除了自問題提出什麼是「XML解析器」之外,我們應該更精確一點。撒克遜不是一個XML解析器。 –

回答

2

一般地,在計算機科學中,解析器是一塊軟件,需要一串字符作爲輸入,並通過引用語法來確定其結構。對於XML解析器而言,該語法是關於開始標記,結束標記,屬性等的規則集合,因此XML解析器的工作是將原始XML文檔作爲輸入並將其轉換爲結構,其中元素和屬性已被識別。

不幸的是,你會發現儘可能多的人誤用了正確使用該術語。當人們談論「編寫一個XML解析器」時,有很多關於StackOverflow的問題(我今天已經看到了一些問題),他們實際上正在編寫處理XML解析器輸出的XML應用程序。

W3C XML規範實際上並未使用術語「XML解析器」;它談到了一個「XML處理器」。我認爲這是因爲XML處理器不僅僅是解析。它也做了一些一致性檢查(檢查開始和結束標籤是否匹配),在純粹的計算機科學意義上它不是解析器的工作,它也可以進行驗證(檢查解析器標識的元素是否符合規則一些DTD或模式)。

使用XML來表示任何類型的數據的優點之一是,您不必編寫自己的解析器;有大量的XML解析器可以用於這項工作。您引用的W3Schools網站僅僅指出,這適用於模式,與任何其他類型的結構化數據一樣。

對於@Zafar的評論的迴應,Saxon不是一個XML解析器(儘管發現人們稱它爲常見)。 Saxon包含許多用於處理XML的工具,使用XPath,XSLT和XQuery等語言,但Saxon不解析XML本身;它會調用外部XML解析器的服務來執行此操作。但是,使用像Saxon這樣的通用XML工具的能力是以XML表示數據的另一個好處,它可能比重用XML解析器本身更有價值。

+0

「適用於模式」是指xsd? 「任何其他類型的結構化數據」的含義。 – ilm

1

XML Schema使用XML語法,因此可以使用標準XML解析器進行解析。這是在DTD的優勢,例如,它不能被解析爲XML,並允許一些非常實際的好處:

  • XSLT可以解析的XML Schema來生成文檔或 變換一個XML模式到另一個相關的XML架構。
  • Schematron可以解析XML Schema來檢查是否符合 部門或其他組織準則/政策。
  • JAXB和xsd.exe可以將XML Schema解析爲 生成Java或.NET中支持編組和自動解組的類。

由於XML Schema使用XML語法來表達其約束,因此這些好處更容易實現。