【问题标题】:How do XML namespaces work when not connecting to the internet?未连接到 Internet 时 XML 命名空间如何工作?
【发布时间】:2026-01-19 01:40:01
【问题描述】:

我正在学习 XML 和 Web 服务,但我不知道当我的应用未连接到 Internet 时如何获取 XML 命名空间?

我正在使用一个与 XML 命名空间对应的库,但我不明白它们是如何相关的。

【问题讨论】:

    标签: xml web-services xsd xhtml xml-namespaces


    【解决方案1】:

    如果您的 XML 文档必须与可能具有类似名称元素的其他系统交互,则 XML 命名空间仅用于使您的元素保持唯一性。之所以附上 URL,是因为域名是一种全局强制的命名空间机制,只要每个人都遵循使用 url 的约定,就不应该发生冲突。换句话说,如果有人拥有spoon.com 域,那么他们可以合理地确定没有其他人会使用该命名空间,因为它受ICANN 等机构的监管。但是,在spoon.com 组织中,成员必须确保他们之间不会发生冲突。

    这可能对你有用:Why are URLs in XML namespaces?

    【讨论】:

    • 独一无二!例如:如果我尝试同样的方法是错误的: xmlns:p="someURLs01" xmlns:p="someURLs02" 对吗?
    • 是的,你不应该这样做。就像@kjhughes 指出的那样,不需要使用URI,但它很方便。您可以使您的命名空间类似于 *Thangnv,这几乎可以肯定是独一无二的,但违反惯例。
    【解决方案2】:

    Namespaces in XML 1.0 Recommendation 不要求命名空间 URI 能够用于检索任何内容。因此,不需要连接到 Internet。命名空间甚至可以命名为 URL 以外的名称,但是 URL 中域名的权威性和唯一性方面非常方便。

    XSD 放在命名空间给定的 URL 的端点通常也很方便。由于这种做法,您可能会担心连接到 Internet,但这里也没有任何内在问题,至少在命名空间本身方面没有问题。如果您出于验证目的而需要访问 XSD,则可以保留一个本地副本,并且仅在您希望它检索本地而不是远程副本时更改提供给 XML 处理器的提示。

    有关指示 XML 处理器如何查找 XSD 的方法,尤其是关于命名空间的方法,请参阅 XML Catalogsxsi:schemaLocation and xsi:noNamespaceSchemaLocation

    【讨论】: