QName值可以没有前缀吗?

时间:2012-03-12 20:31:53

标签: xml xsd xml-namespaces qnames

假设一个元素声明为QName:

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

在实例文档中,example的值可以没有名称空间前缀:

<example>Hello</example>

如果是,那么Hello的命名空间URI是什么?

假设我声明了一个默认命名空间:

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

Hello命名空间中有http://www.example.org吗?

2 个答案:

答案 0 :(得分:0)

Hello是一个值而不是元素或属性名称,因此它没有名称空间URI,它只是一个字符串。

声明

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

example的可能值限制为与QName语法匹配的字符串(在http://www.w3.org/TR/REC-xml-names/#ns-qualnames中定义 - 因此有效值可以是aa:b等等),但它没有说值是一个QName。

答案 1 :(得分:0)

内容遵循与元素(而非属性)名称相同的规则。没有前缀的QName被解释为在实例中由具有xmlns属性的最近包含元素声明的默认命名空间中,或者如果没有声明命名空间则在无名空间中。所以,是的,Hello将被解释为表示该命名空间中的名称的QName。