0

在任何 xsd 文件中,我们多次发现引用 xml 命名空间的元素类型,例如在以下 xsd 中:

<xsd:element type='x:SOME_TYPE_NAME'>

命名空间“x”中提到了元素的类型,名称为“SOME_TYPE_NAME”。我想从那个特定的 xml 命名空间定义或 xsd 定义这种类型。我该怎么做呢?请帮忙。

4

1 回答 1

0

首先,请注意,没有中央机构提供您正在寻找的信息,因此不能保证对于给定的命名空间 x 和类型名称 SOME_TYPE_NAME 将只有一个 XSD 类型定义。同一个命名空间可能有多个模式,它们的 SOME_TYPE_NAME 定义完全不同。

也没有通用规则说明给定命名空间的所有者(这里是绑定到前缀 x 的命名空间)应该如何组织该命名空间的模式文档,或者他们应该去哪里。在某些情况下,给定系统中使用的所有模式文档可能会缓存在某个本地模式存储库中(数据库管理系统非常喜欢这种方法)。

所以事情可能会有很大的不同。但很多时候,有可能找到您正在寻找的(或至少一些)定义。

您引用的元素声明是指在给定名称空间中定义的类型。如果这不是发生声明的架构文档的目标命名空间,那么架构文档必须包含显式 xsd:import 元素,该元素导入绑定到前缀 x 的命名空间。xs:import 元素通常会带有一个 schemaLocation 属性,该属性提供有关在该命名空间中查找声明的位置的提示。schemaLocation 属性不是必需的,并且验证器没有义务取消引用该 URI(也许它有一个它喜欢的本地存储库,或者它已经被一个运行时参数调用,指示它在别处查找),但是许多验证器确实这样做了默认情况下按照链接(即使他们不这样做,该 URI 也是您可以查看的一个地方——您的架构文档的作者)

取消引用命名空间名称以查看那里是否有任何文档通常也很有帮助。命名空间所有者没有义务将任何可取消引用的文档放在命名空间名称中,并且软件每次看到命名空间中的元素时取消引用命名空间名称通常被认为是非常糟糕的做法,但你不是软件,你是一个人,并且取消引用命名空间名称对您来说是一个不错的做法。一些命名空间所有者在命名空间名称处放置一个模式文档,有些则在其中放置一个 RDDL 文档(用机器可处理的指向模式、文档等的指针扩展的 HTML)。

对于一些众所周知的名称空间,您可以通过正常的 Web 搜索过程找到文档。

于 2013-02-01T20:03:37.700 回答