2016-01-22 184 views
1

我來自HTML/JavaScript/PHP背景,最近開始學習XMLXML是否真的更具語義,即帶有class/id的HTML?

我讀this excerpt「用PHP沒有廢話XML Web開發」,其中包括這個比較:

<div> 
    <div> 
    <h2>Product One</h2> 
    <p>Product One is an exciting new widget that will simplify your life.</p> 
    <p><b>Cost: $19.95</b></p> 
    <p><b>Shipping: $2.95</b></p> 
    </div> 
</div> 

好好看看這個 - 誠然簡單 - 代碼示例從計算機的角度來看, 。一個人當然可以閱讀這個文檔,並做出必要的語義飛躍來理解它,但是一臺計算機不能。 ...

試圖解密此文檔的計算機程序(甚至某些人)將無法進行必要的語義跳躍來理解它。計算機將只能夠使用與每個標籤相關聯的樣式將文檔呈現給瀏覽器。 HTML主要是一組用於在Web瀏覽器中呈現文檔的指令;它不是一個結構化文件來表達它們意義的方法。

如果上述文件是在XML創建的,它可能看起來有點像這樣:

<productListing title="ABC Products"> 
    <product> 
    <name>Product One</name> 
    <description>Product One is an exciting new widget that will simplify your life.</description> 
    <cost>$19.95</cost> 
    <shipping>$2.95</shipping> 
    </product> 
</productListing> 


筆者再此與此相比,XML

理論上,我們應該可以查看任何XML文檔,並且可以立即理解發生了什麼。在上面的示例中,我們知道產品列表包含產品,並且每個產品都有名稱,說明,價格和運費。您可以正確地說,每個XML文檔都是自描述的,並且可以被人類和軟件讀取。


我得到了作者的觀點在一定程度上。當然,電腦無法辨別這個HTML的含義,沒有上下文。我不希望HTML這樣寫。相反我期望HTML使用classes和/或ids提供必要的上下文更像:

<div class="productListing"> 
    <div class="product"> 
    <h2 class="name">Product One</h2> 
    <p class="description">Product One is an exciting new widget that will simplify your life.</p> 
    <p class="cost"><b>Cost: $19.95</b></p> 
    <p class="shipping"><b>Shipping: $2.95</b></p> 
    </div> 
</div> 

鑑於這種例子,我的問題是:

XML真的比HTML更多的語義是利用classes/ids爲其包含的數據提供上下文?

注意我簡化了代碼示例,以避免TL; DR)

+2

我會爭辯說,一個html類是一個樣式構造。它不應該用於數據上下文。你可以按照你所顯示的方式使用它,但它不是標準的,因此在你的個人領域之外使用有限。另外,與xml標籤不同,類屬性的值不受xsd的限制。 –

回答

1

這是一個有趣的question.I'll給你我的兩分錢。

幾年前,當我不得不建立一個動態網站,並且我的客戶端無法訪問數據庫(只是FTP訪問)時,我跳到了XML。我基本編碼的是一個XML後端和PHP,它提取了這個通過SimpleXML解析。

回想起來,我認爲XML在語義上比HTML更豐富。正如上面所指出的,html類是一個樣式構造。我不記得親自使用/聽到任何人使用類或ID爲基於CSS/JS的樣式或動畫以外的目的。

在類中使用XML over HTML的關鍵是能夠靈活地將其扔掉。對於另一個項目,從一個系統更新XML元素的值,然後讓它們讀取並顯示在另一個系統上,可以使許多事情變得更加流暢。另外,XML解析庫允許通過節點解析許多函數。

另外需要注意的是,XML允許您定義屬性。這可以被看作類似於類和HTML的東西。

另外,我們不要忘記,RSS提要基本上是XML,而不是帶有更多標籤的HTML。

因此,具體回答你的問題語義,我絕對認爲XML在這方面有優勢。

TLDR:XML是更根據我語義

1

你是正確的,在剛剛看的標記而言,很少有做HTML類XML的「有意義」的元素名稱之間無差異, /ID。但是,請記住,對於XML,有一組技術和工具可讓您輕鬆處理元素名稱。您可以編寫模式並根據它們進行驗證。您可以使用命名空間來撰寫模式。您可以使用簡單的XPath表達式來提取結構。所有這些對於HTML方法來說都非常困難。

所以如果你有捕獲和處理「有意義」的結構的需求,那麼XML就是你的朋友。如果你只想擁有可以說「這是一款產品」的東西的快照,那麼或許真的可能沒有那麼大的差別。

我的建議是:如果您使用多個發佈管道存儲和處理數據,那麼XML很可能是一個更好的起點。如果所有你想要的都是捕捉快照,這些快照將被傳遞給基於HTML的使用者,那麼「語義豐富」的HTML可能是更簡單的方法。

相關問題