對xml schema中命名空間的兩個錯誤理解(**:http://magicwd.***/march/zblog/catalog.asp?cate=1)
最近開始進入xml實踐階段,主要是因為神奇一刻
準備推出乙個電影方面的欄目,我們準備使用xml來做一些工作,所以,這兩天在這兩天在試著寫寫xml和xsdl。昨天,兩個問題困擾了我一晚上!都是關於命名空間(namespace)的問題。
原來在一篇關於xml schema的文章
中寫到定義了目標命名空間(targetnamespace)的xml schema在實力化後,其xml文件中的xsi:schemalocation
的值應為.xsd文件的位置。現在才知道錯了,應該是
也就是說,xsi:schemalocation
的值應該是乙個列表,即乙個表示在.xsd文件中定義的目標命名空間,乙個是.xsd的路徑。
另乙個問題,如果在.xsd文件中是如下定義的:
...
那麼,其中的elementformdefault
一定要設成"qualified"
,因為這種情況下,預設的命名空間的字首(prefix)是空的,所以,在實力化後的xml文件中,元素就沒有字首了。但是這個問題我還是沒有完全弄明白,等弄明白了在寫篇文章吧。
這兩天發現,還是altova xml suite enterprises
好用,放棄了stylus studio 6
。在學習xml schema
的時候,文件中元素的三個命名空間
(namespace)以及在xml中應用xml schema時所需要的命名空間,總是讓像我這樣的初學者摸不找頭腦,不知道有什麼用途,有什麼區別。所以對這些命名空間做了個總結,希望能夠理清一些思路。
以下是乙個xml schema文件範例(**1):
<?xml version="1.0" encoding="utf-8"?>
...
即上面文件中的xmlns:xsd="http://.w3./2001/xmlschema"
是定義所有xml schema元素的命名空間(帶有xsd
字首的元素),比如,xml schema文件的根元素,元素宣告
等等。
targetnamespace實際上就是需要用該schema的xml文件要遵守的命名空間。比如
<?xml version="1.0" encoding="utf-8"?>
...
其對應的xml文件就應該是:
<?xml version="1.0" encoding="utf-8"?>
...
即xmlns="http://.marchbox.***/ns"
部分,其定義的是xml schema文件中的預設命名空間,比如在下面這個元素宣告中,任何乙個得到使用或引用(
ref="root"
)的元素或屬性都將應該遵守這個預設的命名空間http://.marchbox.***/ns
。
如果要把乙個xml schema文件(*.xsd)應用到乙個xml文件中時,我們可以分為兩種情況:
最後來看看中的這兩個可選的(不必要的)屬性。elementformdefault用來定義例項化後的xml文件中,屬性名稱的前面是否需要加命名空間字首,如果
elementformdefault="qualified"
,那麼xml的屬性名稱前面就需要加字首,比如xml schema文件如**1,xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
可以看見,每個元素都要求帶有字首」mcb:
「如果值為」unqualified「,那麼就不需要「mcb:
」了。attributeformdefault的意思一樣,只是需要加字首的不是元素而是屬性,如果值為」qualified「,那麼,上面的xml文件**中的type="straight"
就應該寫為mcb:type="straight"
了。
以上就是對xml schema中一些命名空間方面知識作得總結。
XML Schema命名空間
xml schema有兩種,分別是微軟和w3c的版本。可以從其命名空間直接區分 這裡我們主要討論的是w3c版本,實際上兩者差別並不是很大。xmlns xsd xmlns targetnamespace elementformdefault qualified 這段 是w3c版本下的schema命名空...
命名空間和XML Schema
namespace 命名空間是一組保持唯一的名稱。例如,可以將乙個公司所有人的姓名視為乙個命名空間。命名空間就是在邏輯上相關的任何一組名稱,而且每個名稱都必須唯一。lvqi pingdu reminder dont forget eat grass 預設命名空間 lvqi pingdu remind...
XML Schema和名域 命名空間
xml schema和名域 命名空間 xml schema和名域 schema 是一些規則的集合 也稱為語法或者語彙 其中包括了型別定義 簡單和複雜型別 以及元素和屬性宣告。由於xml中可能存在不同的語彙來描述不同的元素和屬性,因此需要使用名域 namespace 和字首來避免元素和屬性宣告之間的模...