使用XHTML命名空间,每个属性是否也有命名空间?
问题描述:
当扩展XHTML一个非常简单的CMS,我想知道如果我要使用使用XHTML命名空间,每个属性是否也有命名空间?
<cms:include document="foo/bar" />
或
<cms:include cms:document="foo/bar" />
给定一个文档声明如下:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cms="http://spongegroup.com/ns/cms">
(基本上这个想法是制作一个简单的解析器,其中列出了几个XHTML标签,并添加了一些我自己的)。
在cms:namespace中的元素的属性上是否需要cms:prefix?
答
您不需要cms:
元素的属性前缀cms:
,因为这些属性的含义是由它们所属的元素决定的。
请参阅XML namespace recommendation:“前缀属性的解释由它们出现的元素决定”。
然而,从技术上讲,前缀不确定的属性属于空名称空间。
编辑于2011-06-06修正了误导性句子。感谢评论者。
“缺省情况下,给定元素的XML属性属于此元素的名称空间”。这可能是错误的或误导性的。未预先定义的属性始终位于* null名称空间*中,而不是它们所属元素的XML名称空间。你给出的引用意味着属性被它所属的元素充分*限定,而不是它采用元素的名称空间。你是正确的,该属性不需要分配给它的前缀或命名空间。 – Alohci 2011-03-19 01:57:01
感谢球员们......对我来说似乎是一个微妙的区别,但是我不需要在每个属性上都使用ns:前缀。 – fazy 2011-03-21 08:07:20
Downvote的答案完全错误 - 请重新翻译。阿洛奇是正确的;属性默认在空名称空间中。不知道这会在尝试使用XSLT之类的东西时造成严重问题。 – 2011-06-07 19:46:21