2012-03-12 78 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,表示该名称空间中的一个名称。