2012-03-12 73 views
1

假設一個元素被聲明爲QName類型:QName值可以不帶前綴嗎?

<element name="example" type="QName" /> 

在一個實例文檔,可以在example值將是一個沒有命名空間前綴:

<example>Hello</example> 

如果是,那麼是什麼命名空間URI爲Hello

假設我聲明默認命名空間:

<document xmlns="http://www.example.org"> 
    <example>Hello</example> 
</document> 

是在http://www.example.org命名空間Hello

回答

0

Hello是一個值而不是一個元素或屬性名稱,因此它不具有一個命名空間URI,它僅僅是一個字符串。

聲明

<element name="example" type="QName" /> 

限制example的可能值,以匹配QName的語法串(如在http://www.w3.org/TR/REC-xml-names/#ns-qualnames定義 - 所以有效值可以是aa:b等),但是它沒有說這個值是一個QName。

+1

的解釋是,XML只是一個字符串,而不是一個QName或一個整數或雙或任何其他類型是其他人可能在某些情況下真實的,但不是,例如XQuery和架構瞭解XSLT將返回指定類型的數據如果輸入使用這種模式進行驗證。 – 2012-03-18 10:34:29

0

內容服從相同的規則元件(而不是屬性)的名稱。沒有前綴的QName被解釋爲在實例中由具有xmlns屬性的最近包含元素聲明的默認名稱空間中,或者如果沒有聲明名稱空間,則在無名稱空間中解釋爲QName。所以,是的,Hello會被解釋爲一個QName,表示該名稱空間中的一個名稱。