2012-03-28 61 views
0

我有一個非常簡單的問題,它與給定的XML Schema文件相關,您可以在我的文章下方看到。它來自我必須在一週內寫出的考試,以及關於架構格式良好的問題。不知道爲什麼XML Schema格式不正確?

錯誤已經標記爲黃色,我得到了關於命名空間的提示,但最終我不知道如何解決問題。我的第一個想法是,類型定義Type="Book"需要像Type="urn:Book"這樣的前綴,但我不確定。

我感謝您的任何建議,可以幫助我解決在這種情況下我缺乏知識。

enter image description here

回答

1

那是因爲你指定Book在使用targetNamespace屬性urn:schemaS命名空間。爲此,您需要爲urn:schemaS定義一個名稱前綴,並使其符合type="nsPrefix:Book"

Read this tutorial

+0

非常感謝你爲這個快速的答案,它幫助了我很多,我想我有一個關於命名空間的功能的想法,特別是在這種情況下:) – Matthias 2012-03-28 14:49:19

+0

@Matthias然後接受這是正確的答案 – 2012-03-28 14:51:43

0

當你聲明一個名爲complexType它的名字是一個合格一個,與目標命名空間相關聯 - 這樣你所宣稱是在urn:schema5命名空間的類型Book

當您引用類型時,您必須指定其限定名稱,並且架構不會默認目標名稱空間,它將使用正常的XML名稱空間聲明。因爲您沒有,所以您正嘗試在默認名稱空間('')中使用類型Book,該類型不存在。

你必須要麼添加一個命名空間聲明:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:schema5="urn:schema5" 
    targetNamespace="urn:schema5" 
    elementFormDefault="qualified"> 

,然後用它

<xs:element name="book" type="schema5:Book" maxOccurs="3"/> 

或(我的首選)聲明,你的目標命名空間作爲默認的一個:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns="urn:schema5" 
    targetNamespace="urn:schema5" 
    elementFormDefault="qualified"> 

然後你不必做任何事情。

相關問題