回答
的x:
是在你的XML命名空间标识符。对于元素和属性,XML子树可以有一个“默认”名称空间(由xmlns='...'
设置)。如果您需要其他名称空间中的元素或属性,则需要定义一个前缀,例如xmlns:x='...'
。您从该名称空间使用的元素和属性需要以x:
作为前缀。一个常见的一个我是
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
,然后要求我为use
元素做到以下几点:
<use xlink:href='#foo'/>
在这种情况下,use
元素来自SVG,而href
属性来自于XLink的。两者都不同,但在某些地方兼容规格。
而这基本上是命名空间是:
- 组不同的XML使用成连贯的部分
- 让他们在一个XML
- 可能被用来避免名称冲突(如果有两个命名空间并且都支持名为
foo
一个元素,那么你需要指定要两个foo
S的这。
通过这种方式,名称空间与许多编程语言中的工作方式没有多大区别。您可以通过名称空间查看您导入的内容,如上面SVG情况下的库。编写SVG的人注意到已经有了一个允许链接到任意XML元素(XLink)的规范,他们只是重新使用它。在其他情况下,例如WPF,存在名称空间来分隔演示框架的声明UI内容和与代码接口所需的粘合属性。例如。窗口有可能是这样的:
<Window
x:Class="W"
Height='500'
Width='500'
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
时才需要Class
属性编译器知道相应的代码隐藏类,它没有窗户上的任何明显的差异。
另一个示例是XSLT,您可以在其中定义XML文档的转换。 XSLT指令和输出模板都是XML。您通常使用XSLT的元素一个明确的命名空间:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
,这样就可以发出生成的XML,像这样:
<xsl:if test="Content/Chapter">
<xsl:variable name="text"><xsl:value-of select="$trans//item[@name='content'][lang($lang)]" /></xsl:variable>
<h2><xsl:value-of select="$text"/></h2>
<ol>
<xsl:apply-templates select="Content" mode="TableOfContents"/>
</ol>
</xsl:if>
如果我让xsl:
命名空间默认命名空间,那么XSLT处理器无法告诉我从实际的指令中生成HTML。如果您的代码和数据使用相同的格式并且居住在相同的地方,那么这是一个问题。我相信Lisp通过用单引号标记数据解决了这个问题。
至于名称空间是一个URI,这可能只是一个W3C的事情。这些URI不需要任何东西。他们只是标识符。它们并不意味着被检索。使用名称空间的XML的程序必须知道它可以处理和适当行事的名称空间。
“x:”是一个名为x的名称空间别名。在元素上方的某个地方会有一个指向某个url的xmlns:x属性,这个url通常并不重要,它只是一个名字空间的标识符。
“x”只是该文件的本地名称,只要foo:在各处都使用x:被使用,它也可以是xmlns:foo。
命名空间通常由xml处理器使用,以确保它们正在寻找正确的元素(例如对于xlst变换),而不是用户在xml中定义的自定义元素。
您可以阅读更多有关XML命名空间here
- 1. 命名元素时,XAML中x:前缀的用途是什么?
- 2. 为什么'tns'前缀在wsdl文件的类型元素中不需要?
- 3. 我们什么时候需要用“静态”前缀代表?
- 4. 只需要在一个XML元素中添加XML名称空间前缀
- 5. vtd-xml我需要做什么去任何元素
- 6. 我需要一个XML元素的XML元素
- 7. 在C#中,我为MYClass命名空间时,为什么还需要前缀MYClass?
- 8. 为什么Spring Security的RoleVoter需要一个前缀?
- 9. 为什么TypeScript需要“this”。 “内部”模块的前缀?
- 10. 我们什么时候需要<auth-constraint>元素为空?
- 11. 我怎么能得到JSF的前缀为JSF HTML元素2.0
- 12. 我需要的,如果x ==什么
- 13. 为什么我会得到“元素h的前缀h:头未绑定”错误?
- 14. 为什么我需要带有-sources后缀的库文件?
- 15. 为什么Comet需要multipart/x-mixed-replace?
- 16. 为什么我需要MEX?
- 17. 为什么我需要OleDbCommand.Prepare()?
- 18. Swift:Xib文件需要前缀?
- 19. vuex:为什么从名称空间模块中调用突变需要前缀?
- 20. 为什么我的元素
- 21. 为什么需要XML编码?
- 22. 为什么需要XML转换?
- 23. 什么CSS3功能仍然需要供应商前缀?
- 24. 什么是指定“STD”前缀的需要?
- 25. 为什么我需要在sigaddset()之前使用sigemptyset()函数?
- 26. 为什么我需要使用超时?
- 27. 为什么我需要使用Activator CreateInstance?
- 28. 为什么我需要使用stopPropagation()?
- 29. 需要找到XML元素的值
- 30. XML DOM拥有CreateChild需要元素
如果提供了一个URL,但无法访问(无网络连接),会发生什么情况? – 2011-05-19 10:32:20
@liortal:它们并不意味着被检索。他们只是名字。它们看起来像URI,但在那个地方没有东西(至少没有规定)。 – Joey 2011-05-19 10:35:31