有段時間前,自己想要做乙個xmlschema的驗證器,首先想到的就是delphi的vcl中是否已經有現成的函式或者物件,經過一番查詢,發現裡面只封裝了dom中的document,對於與document密切相關的schema幾乎看不到蹤影
既然沒有現成的可以用,那麼我就用微軟留給我們的程式設計介面(1)對於xml檔案,我們都知道微軟提供了dom(文件物件模型)來訪問遍歷它,而對於xml schema檔案來說,其實它也是個xml檔案,所以我們依舊可以用dom來去訪問它(2)dom的早期版本中並沒有乙個schemas的屬性,只有到了msxml4.dll及以後的版本才提供了這個屬性,所以早期版本的dom是不能夠驗證xmlschema,要用domdocument40物件
下面**示例:
varidomdoc40: domdocument40;
ischemadoc: domdocument40;
idomparseerror: ixmldomparseerror ;
ischemacache: xmlschemacache40;
snamespace: string;
// ixmlschema: ischema;
begin
ischemadoc := codomdocument40.create;
ischemadoc.async := false;
ischemadoc.validateonparse := false;
ischemadoc.load('address.xsd');
//得到命名空間
snamespace := ischemadoc.documentelement.getattributenode('xmlns:xs').value;
ischemacache := coxmlschemacache40.create;
ischemacache.add(snamespace, ischemadoc);
// ixmlschema := ischemacache.getschema(snamespace);
idomdoc40 := codomdocument40.create;
idomdoc40.async := false;
//主要是下面這兩行**
idomdoc40.validateonparse := true;
idomdoc40.schemas := ischemacache;
idomdoc40.load('address.xml');
idomparseerror := idomdoc40.parseerror;
if idomparseerror.errorcode = 0 then
showmessage('驗證成功');
//如果驗證失敗,還可以通過下面的資訊來定位錯誤的地方
// idomparseerror.reason;
// idomparseerror.srctext;
// idomparseerror.line;
end;
使用XML Schema驗證XML資料輸入
現在xml使用的越來越多,在sql server表中我們可以建立xml列儲存資料。昨天在論壇看到有人說建立了乙個儲存過程處理xml,但是插入目標表的時候報錯,而報的錯誤不詳細。其實這個問題的根本原因是xml的資料有問題,應該在插入的時候對輸入的資料進行驗證 對於使用者輸入的資料一定要做驗證 其實sq...
大致的XML SCHEMA介紹
1 xml schema簡介 xml schema是w3c制定的基於xml格式的xml文件結構描述標準。作為一種文件描述語言,通常我們將其簡寫為xsd xml schema define xsd作為dtd 文件型別定義 的替代者,已經廣泛地應用到各種商業應用。2 如何使用xsd 看一下以下xsd檔案...
XML schema學習的部分總結
剛剛學了xml schema模式,為了方便分享。在此總結一下我學習的經驗。首先schema文件都必須要使用schema元素作為其根元素。哎,直接上 吧,來的直接,嘿嘿,這裡需要特別的注意,這個語句必須在此結束。因為後面定義的是他的資料型別,不結束的話後面編譯就會出現錯誤,在這點上我吃了不少虧,嗚嗚。...