xml over属性中名称空间的范围

时间:2013-10-08 16:02:39

标签: xml namespaces

我对xml中名称空间的范围存在概念上的混淆,考虑这个例子,

    <envelope>
    <order xmlns="http://example.org/ord" xmlns:prod="http://example.org/prod">
        <number>123ABBCC123</number>
        <items>
            <product xmlns="http://example.org/prod">
                <number prod:id="prod557">557</number>
                <name xmlns="">Short-Sleeved Linen Blouse</name>
                <prod:size system="US-DRESS">10</prod:size>
                <prod:color xmlns:prod="http://example.org/prod2" prod:value="blue"/>
            </product>
        </items>
    </order>
</envelope>

attiribute'系统'的名称空间是什么?

它在前缀 prod 名称空间中是否与其元素 size 相同,

或者它是默认名称空间作为其父元素产品

2 个答案:

答案 0 :(得分:3)

通常认为没有前缀的属性没有名称空间;当然,这是大多数API提供它们的方式,以及XQuery,XPath和XSLT。

但是,我听说小学生建议,命名空间规范并没有真正说明这一点。实际上说的是:

Default namespace declarations do not apply directly to attribute names;
the interpretation of unprefixed attributes is determined by
the element on which they appear.
显然“直接”这个词是委员会的妥协,因为有些人认为无前缀属性的命名空间实际上是有关XML词汇表语义的问题。我甚至遇到过一些人断言这句话应该被解读为没有前缀的属性与其包含的元素位于同一名称空间中。但是,这就是XML API真正重要的事情,而不是名称空间规范所说的。

答案 1 :(得分:0)

答案是肯定的。

前缀prod引用同一名称空间,稍后将其设置为product元素的默认名称。