0

我使用 vmware ovftool 创建了一个 ovf 文件:

<Envelope vmw:buildId="build-931074" 
          xmlns="http://schemas.dmtf.org/ovf/envelope/1"  
          xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common"  
          xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"  
          xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schem/2/CIM_ResourceAllocationSettingData"  
          xmlns:vmw="http://www.vmware.com/schema/ovf"  
          xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"  
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
....//deleting some contents
<OperatingSystemSection ovf:id="74"  
                        vmw:osType="windows7_64Guest">

如何理解以下行:

xmlns:vmw="http://www.vmware.com/schema/ovf" 

我能从中得到的只是这声明了命名空间前缀vmw。但是,如何查看此命名空间的架构文件?我的意思是如果没有模式文件,我们就无法获得从该命名空间派生的词汇表。“vmw:osType”是来自命名空间的词汇表。提前感谢您的有用见解。

4

2 回答 2

0

您必须向XSD创建者询问该架构。但是,主XSD文件通常会schemaLocation指向架构的物理位置。

此外,XSD 位于此处。他们在这里有一个很好的文档。

于 2013-04-24T03:09:31.960 回答
0

如果您可以从命名空间声明xmlns:vmw="http://www.vmware.com/schema/ovf"中得到的只是它声明了命名空间前缀vmw,那么原因之一是这实际上就是它可靠地做的所有事情。命名空间名称可用于多种用途,但 XML 中的命名空间设计唯一保证的是它们提供唯一的字符串,以便不同的人可以在 XML 文档中使用相同的本地名称而不会发生名称冲突。

使用 URI 作为命名空间名称的一个原因是 URI 可以被寻求更多信息的人取消引用,就像您一样。在这种情况下,URI 所有者似乎没有在命名空间 URI 中提供任何人类可读的信息,因此您只能靠自己。

如果您可以验证您显示的文档,那么您的 XSD 验证器正在某处为该名称空间查找架构文档;很可能(尽管不能绝对保证)该模式文档是从 XML 实例文档、xsi:schemaLocation属性中或从xs:import验证器正在咨询的模式文档之一中的元素指向的。

当然,您总是可以尝试询问命名空间所有者,或使用搜索引擎来帮助查找命名空间的架构文档。当然,您找到的任何模式文档都可能是命名空间的权威或非权威定义。

祝你好运。

于 2013-04-24T15:45:53.020 回答