iT邦幫忙

DAY 16
7

XML系列 第 16

[XML]16-驗證

  • 分享至 

  • xImage
  •  

介紹完了轉換,接著要介紹的是XML資料的驗證。
在進入XML的主題之前,先談談資料驗證的概念。收到如下圖的資料,如何處理?

常見的做法是寫一隻對應的轉檔程式,依據雙方先前溝通好的格式及各欄位定義(型態、長度),逐列逐列地讀取檔案內容、剖析資料並做後續處理(通常是轉進Temp資料庫)。萬一格式或欄位內容的型態、長度有誤,程式就會中止並記錄資料錯誤發生原因。

這種方式簡單來說,就是把驗證和剖析資料合在一起做。

在處理XML時做法略有不同,簡單說,處理XML資料時,驗證和剖析是分開成兩個動作。剖析資料要撰寫程式,但驗證資料是不需要撰寫程式的。驗證資料的做法架構與之前[XML]15-轉換所提到的很類似,也是透過工具程式,大致如下圖所示:

只要提供一個 dtd 或 xsd (註),就可以使用現成的工具程式對 XML 進行合法性驗證,包括所有的欄位屬性、長度、出現必要性、從屬關係。跟轉換一樣,那個工具程式有現成的,不用自己寫,如果是用程式開發,在各個程式語言平台都找得到這個工具程式。

XML 這種「使用工具程式和另一個格式描述檔來檢查資料合法性」的做法,和本章節一開始所提到的一般做法,有什麼差別嗎?或是有什麼好處呢?

假想有一家網路書店,需要收集好幾家實體書店的電子化書籍庫存資料,以提供消費者查詢。

一般做法是由網路書店先定義好庫存資料的格式,寫成文件,再交由各家實體書店去寫程式,然後各家依據同一份文件產生出來的資料,難免會有一些錯誤,最麻煩的是這些錯誤不是由各家實體書店發現的,而是由網路書店接收資料時發現的,網路書店一一更正,實體書店再一一配合修改,這個過程耗時又耗人力。

XML 的做法除了文件之外,網路書店可以將 dtd/xsd 放在網站上,提供給各實體書店,各實體書店就可以拿 dtd/xsd 來檢查自己所產生的資料是否符合規定,只要一個動作,不必自己寫額外的程式,就可以在將資料送給網路書店之前,先確定資料正確性。

新建立的資料如此,在變更資料格式也是相同道理。就上面網路書局的例子而言,假設今天希望在庫存資料中,增加一個「售價」的欄位,除了更新文件並寄給每一家書局之外,只要在原本網站上的 dtd/xsd 中增加「售價」欄位的定義,就可以確保之後接收到的資料,都是新版有售價欄位的資料。

由以上的描述得知,當資料往來是多對一或多對多時,好處更加明顯。

註:dtd 和 xsd,基本上就是用來描述XML文件的結構及欄位細節的定義檔,功能很強大,也有點複雜,下兩個章節會分別介紹。

本系列文章列表
Next : [XML]17-驗證之DTD


上一篇
[XML]15-轉換
下一篇
[XML]17-驗證之DTD
系列文
XML30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Ken(Bigcandy)
iT邦大師 1 級 ‧ 2011-10-13 00:54:07

看完~飄過~看不懂耶...推一下先...

看更多先前的回應...收起先前的回應...
SunAllen iT邦研究生 1 級 ‧ 2011-10-13 01:18:51 檢舉

推+1...完全不懂xd

總裁 iT邦好手 1 級 ‧ 2011-10-13 07:44:34 檢舉

哈哈

真的看不懂嗎?
寫得太澀了
臉紅

鐵殼心 iT邦高手 1 級 ‧ 2011-10-13 11:05:23 檢舉

每個字都認得, 組合起來完全看不懂.

我要留言

立即登入留言