4

我有一个 XML 模式文件,它引用了一个基于 urn 的位置。是否有某种方法可以将其解析为 url,或者有某种方法可以实际读取它所引用的文件。

<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclGrp.xsd:1.1"/>
4

3 回答 3

5

这个问题不是解释“URN解析”的好地方......我们可以想象从这个绿洲URN到schemaLocation文件名或URL的翻译(通过自动翻译器),但它对于URN来说有点异国情调.

请参阅 http://www.w3.org/TR/xmlschema-1/#schema-repr上的schemaLocation的常用语义和值


#URN 分辨率

您可以在 Wikipedia 中查看 URN 的真实示例,并在RFC-2169RFC-2483中查看术语“解析 URN”的完整语义。根据这些 RFC,您需要的是本地软件或执行N2L的“URN 解析器”软件(网络服务)的 URL:给定一个URN,返回一个 URL。

广泛使用的 URN

2002 年URN 解析机制受到更多关注,两个新的 RTF RFC-3404RFC-3405解决了 URN 的一个潜在问题,

如果 URN 解析合并为通用 URI 解析,则 URN 可能会因缺乏采用 URI 解析而受到影响。

解决方案是允许 URN 解析的快捷方式。(...) 通用 URI 解析首先将已知 URI 方案的规则插入“uri.arpa”。注册表。对于“URN:”URI 方案,“uri.arpa”中的规则之一。将用于“urn”URI 方案。该规则将简单地委托给“urn.arpa”。基于 URN 命名空间的其他 NAPTR 的区域。本质上,“URN:”的 URI 解析重写规则是 URN 解析应用程序的第一个众所周知的规则。

一些解析问题仍然存在:URN 喜欢urn:doiurn:lex:br具有如此使用且稳定的解析机制(分别在dx.doi.orglexml.gov.br/urn),但未在IANA 的 assignments/urn-namespaces注册;一个未使用、不稳定且不受控制的 URN,例如 urn:oasis:names:tc:ditaurn:oasis在 IANA 注册。

于 2014-06-08T12:14:40.937 回答
2

...也许看看RFC3121 A URN Namespace for OASIS?

编辑:我永远记不起 URI 和 URN,但我的理解是它们只是名称空间,它们实际上不必对应于网络上存储文件的某个真实位置。他们只是划分了对部分命名空间的控制,因此urn:oasis处于 OASIS 的控制之下。除非您可以控制它,否则您不应该发明层次结构的该部分内的任何 URI / URN。

编辑 2:谷歌搜索在 oasis-open.org 中找到了一个名为tblDeclGrp.xsd的文件以及对其和其他模式的一些评论

于 2009-05-07T18:01:12.350 回答
1

在这种情况下,schemaLocation 就是位置。如果您在同一目录中有一个与此名称完全相同的文件,则应该解析它。它甚至包括 urn: 部分所以完整的字符串。在模式命名空间之后命名文件很方便。起初我必须承认令人困惑。

顺便提一句。urn 不是一个位置,它只是一个 URI。xs:include schemaLocation 的属性指的是一个位置,但属性类型是 anyURI,它包括 urn 模式

于 2009-05-07T17:58:57.440 回答