首页 / 知识
关于xsd:XML命名空间和属性
2023-04-14 01:38:00

XML namespaces and attributes我试图了解名称空间如何在XML中工作。 当我有一个像foo:bar这样的元素时,这些属性通常将没有名称空间。 但是有时候他们会。 即使声明了默认名称空间,属性也位于元素的名称空间中吗? 查看xsd中的xhtml,似乎属性是架构的一部分,应该在xhtml的命名空间中,但是从来没有那样显示它们... 大多数时候,属性不会出现在任何命名空间中。命名空间规范说(强调我的):
大多数XML词汇表使用非命名空间属性是有原因的:
那么为什么命名空间属性存在?
最后,W3C XML Schema拥有一种非常简单的方法( 使用Clark表示法的示例,其中用大括号将名称空间前缀替换为名称空间URL:
是
今天,当我使用XSD时,与此属性/命名空间主题相关的一些事情使我花了一些时间来理解。 在我正在研究的模式文档中,一些元素引用了几个全局属性。为了简化起见,我们假设我正在谈论的XSD是关于客户的。 让我们称这些全局属性Id之一。和使用它的根元素Customer 我的XSD声明看起来像这样:
我的Id属性声明如下所示:
我的Customer元素使用了如下属性:
现在,假设我想这样声明一个Customer XML文档:
我发现不能:当全局声明该属性时,该属性与引用该元素的元素不在同一命名空间中。 我发现用XSD定义的唯一解决方案是两次声明名称空间:一次不带前缀以使其成为元素的默认名称空间,一次带前缀以使其与属性一起使用。这就是它的样子:
这太不切实际了,以至于我决定放弃所有全局属性,然后在本地声明它们。在我给的例子中,维奇看起来像这样:
我发现很难在网上找到一些关于我在说什么的参考。我最终在Stylus XSD论坛上找到了这篇文章,一个叫Steen Lehmann的人建议要么在本地声明属性,要么在属性组中声明它。
最后一个解决方案具有" hacky"的味道,因此我决定坚持使用第一个解决方案,并在本地声明我的所有属性。 在w3c上阅读6.1命名空间范围和6.2命名空间默认值。 基本上:
但是,这里的文本似乎没有解释a的意思是a:foo:a还是上下文中的默认名称空间。我假设它没有引用foo:a,而是文档的默认名称空间a。至少考虑此报价:
就是名称空间" foo:"仅适用于以foo为前缀的元素: |
最新内容
相关内容
linux默认命令删除?
linux默认命令删除?,系统,软件,名称,档案,命令,文件,目录,不了,电脑,文件夹,关于linux的删除命令1、命令格式:rm [选项] 文件… 命令功能:删除一linuxrm命令默认?
linuxrm命令默认?,系统,命令,档案,工作,文件,目录,名称,文件夹,选项,子目录,linux如何使用rm命令快速删除文件Linux rmdir命令:删除空目录(空的linux命令查看包属性?
linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标准,Linux文件相关命令命令一:cat cat命令应该是在Linux中查看文件内linux命令默认加后缀?
linux命令默认加后缀?,系统,文件,密码,通用,设备,命令,目录,后缀,表示,程序,linux下如何增加目录下的部分文件.bak后缀??又如何将.bak后缀删除linux默认浏览器命令?
linux默认浏览器命令?,环境,系统,发行,工程,工具,浏览器,软件,情况,网站,管理系统,如何在Linux环境下,使用Java打开默认浏览器退出firefox。删linux默认压缩命令?
linux默认压缩命令?,系统,名称,命令,文件,工具,软件,目录,选项,文件名,格式,linux打包压缩命令tar如图看到的示例,用tar命令来打包这些文件以及linux默认命令行字体?
linux默认命令行字体?,系统,工具,等级,数字,百度,情况,代码,终端,字体,字符,linux下tty纯文本终端的字体大小是否可以不借助任何工具进行设置?linux默认命令行模式?
linux默认命令行模式?,系统,密码,工具,地方,设计,设备,服务,网络,终端,界面,linux登录时为什么是命令行模式你是用的什么登陆管理器呢?一般安装linux命令提示符默认?
linux命令提示符默认?,系统,标准,信息,基础,代码,软件,美元,电脑,提示符,用户,如何配置Linux命令行的字体和背景颜色1、\033[46m:设置背景色为linux内核属性命令?
linux内核属性命令?,系统,地址,时间,信息,标准,管理,数据,工作,百分比,内核,一般优化linux的内核,需要优化什么参数1、说起优化,其实最好的优化linux增加默认命令?
linux增加默认命令?,地址,网络,系统,工作,管理,目录,命令,一致,服务,标准,linux下命令行配置网络IP,增加用户,配置网关,修改最大共享内存参数,linux默认安装命令?
linux默认安装命令?,系统,工作,软件,命令,地址,基础,发行,信息,中心,在线,安装linux系统虚拟机怎么使用命令行1、controlvm 命令用来控制虚拟