以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  About Namespace: 关于“名称空间”  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=44539)


--  作者:xml-linguist
--  发布时间:3/28/2007 3:04:00 PM

--  About Namespace: 关于“名称空间”
初来乍到,请多关照;隔行如山,不得真传;问题幼稚,高手海涵。

本人是由于资料处理的需要才步入XML行列的。独自摸索了很久,许多问题无法解决。现提出一个关于“名称空间”的问题,望各位高手帮忙。

以下引用w3school中有关 namespace的一段说明:

====================================
The XML Namespace (xmlns) Attribute
The XML namespace attribute is placed in the start tag of an element and has the following syntax:

xmlns:namespace-prefix="namespaceURI"

When a namespace is defined in the start tag of an element, all child elements with the same prefix are associated with the same namespace.

Note that the address used to identify the namespace is not used by the parser to look up information. The only purpose is to give the namespace a unique name. However, very often companies use the namespace as a pointer to a real Web page containing information about the namespace.

======================================
这个namespace一定是个真实的网址吗?
根据"The only purpose is to give the namespace a unique name."分析,它的作用就是提供一个唯一名称罢了。那么,一个并非在网络上存在的随意名称是否可以呢?


[此贴子已经被作者于2007-3-31 12:02:13编辑过]

--  作者:Qr
--  发布时间:3/30/2007 2:51:00 PM

--  
可以吧。只是不注意不要使用别人已经注册的域名。
--  作者:xml-linguist
--  发布时间:3/31/2007 10:23:00 AM

--  
Thanks a lot, Qr.
--  作者:xml-linguist
--  发布时间:3/31/2007 10:25:00 AM

--  
And thanks to semicolon.

semicolon帖子“XML基本规则”中已经对此问题作过说明:
1.
2.
...
10. 名称空间的存在是为了解决同一份文档中的同名不同义的命名冲突问题(和C++的namespace一样)。
为某一“元素”定义了namespace意味着该“元素”的所有“子元素”具有相同的namespace。
请注意,名称空间(namespace)定义中的字符串仅仅是字符串,不一定非得是URL或者URI。只要你能保证唯一即可


--  作者:xml-linguist
--  发布时间:3/31/2007 10:37:00 AM

--  
在semicolon的帖子中,admin也参与讨论,这个问题就很清楚了。请看:

admin发言开始
namespace的作用不只是解决命名冲突问题。
它**从逻辑上**把XML Names划分为不同的namespace,
不同namespace的XML Names遵循不同的Schema(这一点非常重要。)。用不同的schema对他们进行validating
admin发言结束。

semicolon发言开始:
嗯。这点我一直没有确认。namespace是可以为任意字串的,所以所对应的URI可以根本不存在。也就是说namespace对应的字串仅仅就是字串而已。
你所说的意思是指当XML文档和Schema文档对应的关系,是吧?确实这只能说是“逻辑上”,而XML本身规范并没有“强制”要求,对吧?
semicolon发言结束。

再看“菩提小祖”与“donghid”的辩论:

donghid发言开始:
是不是说用http://www.w3c.org/1999/XSL/Transform和用http://www.w3c.org/TR/WD-Xsl会有不同的作用吖?
我写的XSL文档改了这个作用就不一样.如果是自己随意写的更不能达到要求.虽说这个命名空间可以随意起,但这样只是可以解决了命名冲突. 但写XSL还是要加上以上两句之一的吧.否则有些功能根本没有效果.
一些教程经常强调的是什么"命名空间可以随意起",但是在使用过程中却感觉到事实与之不同.令人不知所措,真是误人不浅!
donghid发言结束。


菩提小祖发言开始:
我现在在读XML,这两个的区别刚好今天阿Sir有说到。
www.w3.org/1999/xsl/Transform 是基本推荐标准
www.w3.org/TR/WD-xsl是草案标准
他们之间的区别是:
1、value_of 后是否一定要加select(推荐标准一定要有)
2、xml:if test=...........
     test是否可以用match替代(推荐标准不能替代)
3、草案标准在判断大小写的写法复杂,而推荐标准只须用“<”“>”来表示~

"命名空间可以随意起",是真的,为了跟别人命名的参数区别开,是有必要的啊~
阿Sir是这么说的,不知道对不对,反正这里高手多,会有人回答的~
菩提小祖发言结束。



--  作者:xml-linguist
--  发布时间:4/13/2007 10:24:00 AM

--  
从现在开始,我不敢说我完全理解了什么是namespace,也不敢说在具体应用中不会出这个方面的错误。但我很欣慰,因为我终于对namespace有了感觉!!!!
谢谢大家!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms