我理解在XML中,如果我对两个不同的标签有相同的tagName,那么为了将它们中的两个分开,我们在它之前加上命名空间以使其唯一.但是当我们说时,在顶部
现在,为什么我们有这个http://www.myNameSpace.com?除了它将是独一无二的事实之外,它的用途是什么.
此外,我正在阅读有关xslt的内容,因为它也是一个XML,所以它将命名空间定义为
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
现在,首先,这个链接究竟是什么告诉我的,它如何帮助xml渲染?那么除了独特之外,它还能提供什么吗?为什么要达到这样的程度呢?如果在XML中,我在两个标签之间存在冲突,我可以使用任意两个名称空间,比如namespace1和namespace2并使用它.
这里有什么我想念的吗?
通常,除了唯一标识与其关联的元素之外,XML命名空间不起任何作用.
换句话说,字符串" http://www.myNameSpace.com "如下:
<rootElement xmlns:myNameSpace="http://www.myNameSpace.com">
纯粹是武断的.它没有必要指向任何地方.此外,所谓的前缀(在这种情况下myNameSpace
,"xmlns:"之后的部分)是任意的,只是说" http://www.myNameSpace.com " 的简写方式.
话虽如此,保留一些:
1)命名空间可以帮助在大文件中构建XML数据,例如OpenXML格式的Microsoft Word文档:
这是典型OOXML中存在的命名空间的摘录:
xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
因此,尽管没有固有的理由可以使用单独的命名空间,但它有助于将XML词汇表划分为有意义的类别.
2)正如你所注意到的那样,对任意定义命名空间有一些限制:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
这将元素标识为属于XSLT名称空间.但是,除此之外,它意味着这样标记的元素由XSLT处理器识别为不仅仅是XML代码,而是要执行的XSLT指令.
链接" http://www.w3.org/1999/XSL/Transform "指向XSLT规范,其中规定了转换XML文档的规则.现在,回答您的问题:声明命名空间无助于转换.相反,如果省略XSLT处理器,则XSLT处理器无法识别XSLT代码.
您可以定义命名空间"namespaceA"和"namespaceB":
xmlns:nsA="namespaceA" xmlns:nsB="namespaceB"
但是你不能用它们来转换XML,除非你只是想改变前缀:
xmlns:nsA="http://www.w3.org/1999/XSL/Transform"
这被认为是不好的做法.