1. 程式人生 > >XML解釋及驗證機制

XML解釋及驗證機制

例子:


注:xml宣告一般是xml文件的第一行;xml宣告由以下幾個部分組成:

4、根元素

它是xml文件裡面唯一的;它的開始是放在最前面,結束是放在最後面。

5、元素:

(1) 所有的xml元素都必須有結束標籤;

(2) xml標籤對大小寫敏感;

(3)  xml必須正確地巢狀;

(4)元素的命名規則:

名稱中可以包含字母、數字或者其他的字元;

名稱不能以數字或者標點符號開始;

名稱中不能包含空格。

(5)空元素

6、屬性

(1)語法

<元素名 屬性名=“屬性值”/>

例:<Student ID=“S100”>

       <Name>Tom</Name>

</Student>

(2)注意:

屬性值用雙引號包裹;一個元素可以有多個屬性,它的基本格式為:

<元素名 屬性名=“屬性值” 屬性名=“屬性值”>;

屬性值中不能夠直接包含<.”,&。

7、實體:

在xml中,一些字元擁有特殊的意義。如果把字元“<”放在xml元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始,這樣會產生xml錯誤:

為了避免這個錯誤,請用實體引用來代替“<”字元:

xml中5個預定義實體

8註釋

注:註釋內容中不要出現”--”;不要把註釋放在標籤中間;註釋不能巢狀。

9、總結:

(1)xml描述的是文件的內容與語義,而不是文件應當如何顯示;

(2)格式正規(well formed)的xml文件

遵循如下規則的xml文件稱為格式正規的xml文件:

v 必須有xml宣告語句;

v 必須有且僅有一個根元素;

v 標籤大小寫敏感;

v 屬性值用雙引號;

v 標籤成對;

v 空標籤關閉;

v 元素正確巢狀。

(3)有效的(valid)xml文件。首先xml文件是個格式正規的xml文件,然後又需要滿足DTD的要求,這樣的xml文件稱為有效的xml文件;

10、解析器

11、名稱空間

11.1、xml名稱空間(xml Namespaces)

(1)xml名稱空間提供避免元素命名衝突的方法。

(2)在xml中,元素名稱是由開發者定義的,當兩個不同的文件使用相同的元素名時,就會發生命名衝突。

11.2、xml名稱空間示例

(1)使用字首示例

與僅僅使用字首不同,我們為標籤添加了一個xmlns屬性,這樣就為字首賦予了一個與某個名稱空間相關聯的限定名稱。

二、DTD技術——xml檔案的驗證機制

1、DTD概述:

文件型別定義——Document Type Definition

DTD用來描述xml文件的結構,一個DTD文件包含:  

元素的定義規則;元素之間的關係規則;屬性的定義規則。

2、為什麼要用DTD呀

v 有了DTD,每個xml檔案可以攜帶一個自身格式的描述,所謂格式描述就是我的xml文件裡面可以寫哪些東西,比如元素、屬性;

v 有了DTD,不同組織的人可以使用一個通用DTD用來交換資料,xml是隨意定義的,有了DTD,我們可以限制多個公司之間按照這種DTD的規則來編寫xml文件,由於DTD都是統一格式,所以不同的公司之間,不同的組織之間就可以用這種通用的xml文件格式進行互動資料了;

v 應用程式可以使用一個標準DTD校檢從外部接收的xml資料是否有效。

3、如何編寫一個DTD

DTD分成三大類,第一是內部DTD,第二是外部DTD,第三是內外結合的DTD。

(1)內部DTD文件(Students.xml):

(2)就是說這個xml文件裡面既包含xml定義,又包含DTD的定義。

這個[]裡面是DTD的定義的內容,就是第一個叫內部DTD文件。

(3)外部DTD文件(Students.xml  Students.dtd):

所謂外部就是DTD的定義和我們的xml文件是在不同的檔案裡面。

那麼外部的DTD如何使用呢?那就需要在前面的xml文件的根元素的上面這個位置跟剛才內部的是一樣的,要寫上

這類年改革文件在同一個資料夾下面,就可以了。

有內部DTD了,為什麼還要學習外部DTD呢??

內部的DTD,它只能驗證當前的這個xml文件。那假如說,我們有一個DTD需要驗證多個xml文件的話,那就直接使用外部DTD就行。

(4)內外部DTD文件結合

4、DTD的具體定義——元素的定義

元素名稱:是指xml文件裡面的元素名稱

元素型別:


(1)EMPTY

示例第一個是對的,第二個是錯誤的,因為它有內容了。

(2)#PCDATA

第一個是對的,第二個是錯誤的。

(3)純元素型別的DTD語法


(4)ANY

5、定義屬性的語法結構

xml文件攜帶資料的方式,不僅僅是xml的元素的內容,還可以是元素的屬性。

所以說在DTD裡面我們有必要對屬性進行限制。

(1)編寫屬性驗證的語法規則:

(2)屬性型別——CDATA

CDATA是表示屬性的值,可以是任何字元,這裡包括數字和中文。

問題一:屬性的CDATA與元素的CDATA節有何區別呢??

屬性的CDATA表示屬性值是任何的字元,元素裡的CDATA節是表示在CDATA節裡面的內容不被xml文件進行解析。

問題二:#PCDATA與CDATA有何區別??

#PCDATA是限制元素裡面的內容是字元型別的,而這個CDATA是限制屬性裡面的內容是字元型別。

(3)屬性型別——ID

表明該屬性的取值必須是唯一的。

(4)屬性型別——IDREF/IDREFS

v IDREF是指它的值要指向文件當中其它地方宣告的ID。把IDREF當成資料庫的外來鍵,把ID當成主鍵理解就行;

v IDREFS同IDREF,但是可以具有由空格分開的多個引用;

(5)屬性型別——Enumerated

預先定義了一些值,屬性的值必須在所列出的值的範圍內

(6)屬性特點——#REQUIRED

它表示元素的所有的例項都必須有該屬性的值(NOT NULL)

(7)屬性特點——#IMPLIED

這就表示該屬性的值是可以被忽略的。

(8)屬性特點——#FIXED

元素中該屬性的值必須為指定的固定值。

(9)屬性特點——Default

為屬性提供一個預設的值。

三、實體

1、實體概述

實體,簡單理解就是C#中的常量,我們在DTD裡面定義,在xml文件裡面去使用。(實際上就是自定義實體,與前面的預定義實體差不多是一回事)。

2、實體的定義


四、xml之Schema技術

1、Schema概述:xml Schema是用一套預先規定的xml元素和屬性建立的,這些元素和屬性定義了xml文件的結構和內容模式。Xml Shema規定xml文件例項的結構和每個元素/屬性的資料型別。

理解:對於Schema來講,我們可以將shema比喻成為是表結構。在表結構裡,定義一些資料的限制要求。然後我們xml文件呢就相當於是資料表將來要儲存的資料u,也就是資料庫裡面的資料表資料了,所以整體來講的話schema它就是用於驗證xml文件的。

2、有了DTD,為什麼要用Schema呢?

(1)DTD的侷限性

DTD不遵守xml語法(寫xml文件例項時用一種語法,寫DTD的時候用另外一種語法);DTD資料型別有限(與資料庫資料型別不一致);DTD不可擴充套件;DTD不支援名稱空間(命名衝突)。

(2)Schema的新特性

Shema基於xml語法的;Shema可以用能處理xml文件的工具處理;Schema大大擴充了資料型別,可以自定義資料型別;Schema支援元素的繼承——Object-Oriented;Shema支援屬性組。

3、Shema(模式):其作用與DTD一樣,也是用於驗證xml文件的有效性,只不過它提供了比DTD更強大的功能和更細粒度的資料型別,另外Schema還可以自定義資料型別。此外,Schema也是一個xml檔案,而DTD則不是。

4、所有的Schema文件,其根元素必須為Schema。

5、Schema的文件結構

6、Schema的資料型別

6.1、Schema的資料型別概述

6.2、簡單型別:

(1)內建的資料型別:

基本的資料型別;

擴充套件的資料型別;

(2)使用者自定義簡單型別(通過simpleType定義)。

6.3、複合型別(通過complexType定義)

6.4、資料型別的特徵

7、Schema的元素型別

7.1、Schema根元素

作用:包含已經定義的Schema

用法:<xs:schema>

屬性:xmlns/targetNamespace/elementFormDefault

例子:

7.2、element元素

作用:宣告一個元素

屬性:name/type/ref/minOccurs/maxOccurs

例子:

7.3、group元素

作用:把一組元素宣告組合在一起

屬性:name

例子:

7.4、attribute元素

作用:宣告一個屬性

屬性:name/type/use/default/fixed

例子:

7.5、attributeGroup元素

作用:把一組屬性宣告組合在一起

屬性:name/ref

例子:

7.6、simpleType元素

作用:定義一個簡單型別,它決定了元素和屬性值的約束和相關資訊

屬性:name

常用的兩種方式:restriction——>一個約束;list——>從列表中選擇。

(1)simpleType元素的子元素——>restriction

子元素為:<xs:restriction>——>定義一個約束條件

例子:

(2)simpleType元素的子元素——>list

子元素為:<xs:list>——>從一個特定資料型別的集合中選擇定義一個簡單型別元素。

例子:

7.7、complexType元素

作用:定義一個複合型別,它決定了一組元素和屬性值的約束和相關資訊。

屬性:name

常用的兩種方式:sequence——>一個序列;choice——>設定選擇項。

(1)complexType元素——sequence

作用:給一組元素一個特定的序列

例子:

(2)complexType元素——choice

作用:把一組屬性宣告組合在一起,以便可以被複合型別應用

屬性:name/ref

例子:

7.8、complexType與simpleType區別

simpleType型別的元素中不能包含元素或者屬性;

當需要宣告一個元素的子元素和或屬性時,用complexType;

當需要基於內建的基本資料型別定義一個新的資料型別時,用simpleType。

相關推薦

XML解釋驗證機制

例子: 注:xml宣告一般是xml文件的第一行;xml宣告由以下幾個部分組成: 4、根元素 它是xml文件裡面唯一的;它的開始是放在最前面,結束是放在最後面。 5、元素: (1) 所有的xml元素都必須有結束標籤; (2) xml標籤對大小寫敏感; (3)  xml必須正確地巢狀; (4)元素的

Struts2驗證框架的配置Validation.Xml常用的驗證規則

<field name="username"> <field-validator type="required"> <message>指定檢驗失敗的提示資訊</message> </field-validator> </field> &l

驗證框架的配置validation.xml常用的驗證規則

<field name="username"> <field-validator type="required"> <message>指定檢驗失敗的提示資訊</message> </field-validator> </field> &l

struts驗證框架的配置validation.xml常用的驗證規則(Struts2的輸入驗證詳解)

<field name="username"><field-validator type="required"><message>指定檢驗失敗的提示資訊</message></field-validator></field></va

Html5新標簽解釋用法

keygen ide you data summary image gen 密鑰 位置 <article> 標簽定義外部的內容。比如來自一個外部的新聞提供者的一篇新的文章,或者來自 blog 的文本,或者是來自論壇的文本。亦或是來自其他外部源內容。HTML5:&

字符串函數---atof()函數具體解釋實現(完整版)

記錄 == include als 技術 整數 ast fill 跳過 atof()函數 atof():double atof(const char *str ); 功 能: 把字符串轉換成浮點數 str:要轉換的字符串。 返回值:每一個函數返回 double 值。此值

Struts2漏洞利用原理OGNL機制

基本 conf 數據集 fig 然而 example 所有 def 字符串類型 Struts2漏洞利用原理及OGNL機制研究 概述 在MVC開發框架中,數據會在MVC各個模塊中進行流轉。而這種流轉,也就會面臨一些困境,就是由於數據在不同MVC層次中表現出不同的形式和狀態

PHP Apache shutdown unexpectedly啟動錯誤解釋解決的方法

csdn ext block div lin p s 配置 ras host 在學PHP的時候,偶然發現XAMPP窗體Apache的啟動出現錯誤,出現下面的錯誤提示: 9:52:41 [Apache] Attempting to start Apache app..

架構師之路--搜索業務和技術介紹容錯機制

朋友 單節點 adb 一致性 公司 一個 memcache 消息通知 包括  今天和搜索部門一起做了一下MQ的遷移,順便交流一下業務和技術。發現現在90後小夥都挺不錯。我是指能力和探究心。我家男孩,不招女婿。   在前面的文章中也提到,我們有媒資庫(樂視視頻音頻本身內容)

shiro中的reaml理解實現機制

rmi 我們 身份認證 理解 例子 generated std dbutil sets shiro中的reaml非常重要,所有的身份數據驗證都在reaml中實現。可以把Realm看成DataSource,即安全數據源。 Shiro從Realm

java中的subString具體解釋應用

clas ava 取字符 pos 指定 rac gin pop java substring(參數)是java中截取字符串的一個方法 有兩種傳參方式 一種是public String substring(int beginIndex) 返回一個新的字符串,它是此字符

JVM內存管理GC機制

per 內存清理 bject long 變量 percent 大數 標記 編寫程序 一、概述 Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫內存回收和垃圾清理代碼,

機器學習經典算法具體解釋Python實現--線性回歸(Linear Regression)算法

ica single 方便 最好的 而且 == show des fun (一)認識回歸 回歸是統計學中最有力的工具之中的一個。機器學習監督學習算法分為分類算法和回歸算法兩種,事實上就是依據類別標簽分布類型為離散型、連續性而定義的。顧名思義。分類算法用於離散型分布

樹鏈剖分具體解釋模板

define 暴力 方法 clas shu query def 當前 pre 這幾天學習了一下樹鏈剖分,順便寫一下我的理解、 早上看了一下別人的解說,雲裏霧裏,最終算是搞懂了、 樹鏈剖分是解決在樹上進行插點問線,插線問點等一系列樹上的問題 假如如今

Qt5.5.1和Qt5.3.2編譯OCI驅動教程驗證方法

oracle下載 電腦 博客 size 版權 ring nbsp scott 所有 我們都知道oracle數據庫的強大,並且好多企業或者教學用到數據庫時都會推薦使用。但是Qt因為版權問題沒有封裝oracle數據庫專用驅動,網上也有一大堆說法和教程,但是或多或少的都有問題。下

Oracle基礎學習2--Oracle登錄與三種驗證機制

cal log 打開 manage nts 系統管理 user 本地用戶和組 成員 首先,Oracle安裝完畢有三個默認用戶   ? Sys:數據庫對象的擁有者。權限最高。password在安裝的時候(口令管理)能夠改變   ? System:數據庫管

物聯網智能硬件設備身份驗證機制

方法 成功 諸多 連接 生成 過程 多次 物聯網 以及 設備身份驗證有以下目標:1,別人的設備不能接入我們的雲平臺2,我們的設備,不能接入別人的雲平臺3,考慮到設備要批量生產,雲平臺先生成設備編碼再寫入每個設備的方法,非常不現實!那麽,標準的設備身份驗證應該是:1,設備上電

理解javascript作用域hosting機制

tro 理解 cti 顯示 定義變量 可見 變量聲明 之前 為什麽 在javascript中, 理解變量的作用域以及變量提升是非常有必要的,特別是對於初學者,很容易莫名地就掉坑裏。 一、javaScript作用域 在C語言中,一對花括號{}代表一個獨立的作用域,我們稱之

小米5查看設備號信息驗證type-c數據線

文件夾 nbsp 可能 devices 設備 device dmesg 開發者 下載 首先,下載adb軟件。 接著打開系統的開發者模式和調試模式。 打開cmd軟件,切換到adb軟件文件夾所在路徑,輸入命令:adb devices,則能看到設備的設備號信息。 如果設備號是00

laravel 驗證機制validation

ges false error val all ted 分享圖片 turn date Laravel 中 validation 驗證 返回中文提示 全局設置 自己建一個zn文件夾,然後把en的4個文件全復制過去,修改validation.php的代碼為下面的內容,然後在ap