更新時間:2021-07-22 來源:黑馬程序員 瀏覽量:
若想通過XML Schema文件對某個XML文檔進行約束,必須得將XML文檔與Schema文件進行關聯(lián)。在XML文檔中引入Schema文件有兩種方式,具體如下:
1、 使用名稱空間引入XML Schema文檔
在使用名稱空間引入XML Schema文檔時,需要通過屬性xsi:schemaLocation來聲明名稱空間的文檔,xsi:schemaLocation屬性是在標準名稱空間“http://www.w3.org/2001/XMLSchema-instance”中定義的,在該屬性中,包含了兩個URI,這兩個URI之間用空白符分隔。其中,第一個URI是名稱空間的名稱,第二個URI是文檔的位置,接下來,通過一個案例來演示如何使用名稱空間引入XML Schema文檔,如例1所示。
例1 book.xml
<?xml version="1.0" encoding="UTF-8"?> <書架 xmlns="http://www.it315.org/xmlbook/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.it315.org/xmlbook/schema http://www.it315.org/xmlbook.xsd"> <書> <書名>JavaScript網(wǎng)頁開發(fā)</書名> <作者>張孝祥</作者> <售價>28.00元</售價> </書> </書架>
在例1中, schemaLocation屬性用于指定名稱空間所對應的XML Schema文檔的位置,由于schemaLocation屬性是在另外一個公認的標準名稱空間中定義的,因此,在使用schemaLocation屬性時,必須要聲明該屬性所屬的命名空間。
需要注意的是,一個 XML 實例文檔可能引用多個名稱空間,這時,可以在schemaLocation屬性值中包含多對名稱空間與它們所對應的XML Schema文檔的存儲位置,每一對名稱空間的設置信息之間采用空格分隔。接下來通過一個案例來演示在一個XML文檔中引入多個名稱空間名稱的情況,如例2所示。
例2 xmlbook.xml
<?xml version="1.0" encoding="UTF-8"?> <書架 xmlns="http://www.it315.org/xmlbook/schema" xmlns:demo="http://www.it315.org/demo/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.it315.org/xmlbook/schema http://www.it315.org/xmlbook.xsd http://www.it315.org/demo/schema http://www.it315.org/demo.xsd"> <書> <書名>JavaScript網(wǎng)頁開發(fā)</書名> <作者>張孝祥</作者> <售價 demo:幣種="人民幣">28.00元</售價> </書> </書架>
2、 不使用名稱空間引入XML Schema文檔
在XML文檔中引入XML Schema文檔,不僅可以通過xsi:schemaLocation屬性引入名稱空間的文檔,還可以通過xsi:noNamespaceSchemaLocation屬性直接指定,noNamespaceSchemaLocation屬性也是在標準名稱空間“http://www.w3.org/2001/XMLSchema-instance”中定義的,它用于定義指定文檔的位置。接下來,通過一個案例來演示noNamespaceSchemaLocation屬性在XML文檔中的使用,如例3所示。
例3 xmlbook.xml
<?xml version="1.0" encoding="UTF-8"?> <書架 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xmlbook.xsd"> <書> <書名>JavaScript網(wǎng)頁開發(fā)</書名> <作者>張孝祥</作者> <售價>28.00元</售價> </書> </書架>
在例3中,文檔xmlbook.xsd與引用它的實例文檔位于同一目錄中。