2011-03-18 97 views
2

当扩展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?

回答

3

您不需要cms:元素的属性前缀cms:,因为这些属性的含义是由它们所属的元素决定的。

请参阅XML namespace recommendation:“前缀属性的解释由它们出现的元素决定”。

然而,从技术上讲,前缀不确定的属性属于空名称空间。

编辑于2011-06-06修正了误导性句子。感谢评论者。

+1

“缺省情况下,给定元素的XML属性属于此元素的名称空间”。这可能是错误的或误导性的。未预先定义的属性始终位于* null名称空间*中,而不是它们所属元素的XML名称空间。你给出的引用意味着属性被它所属的元素充分*限定,而不是它采用元素的名称空间。你是正确的,该属性不需要分配给它的前缀或命名空间。 – Alohci 2011-03-19 01:57:01

+0

感谢球员们......对我来说似乎是一个微妙的区别,但是我不需要在每个属性上都使用ns:前缀。 – fazy 2011-03-21 08:07:20

+0

Downvote的答案完全错误 - 请重新翻译。阿洛奇是正确的;属性默认在空名称空间中。不知道这会在尝试使用XSLT之类的东西时造成严重问题。 – 2011-06-07 19:46:21