gpt4 book ai didi

xml - 为什么要限定实例文档中的全局元素?

转载 作者:行者123 更新时间:2023-12-04 16:52:07 24 4
gpt4 key购买 nike

当使用 xml-Schema 和 namespace 验证 xml 文档时,除了声明 namespace 本身之外,实例文档还必须为其全局元素加上 namespace 前缀以对其进行限定。

有人会认为在这种情况下默认命名空间足以限定元素,但 xml-Schema 显然有另一种看法。

这是为什么? xml-Schema 无法处理的默认命名空间是什么?

最佳答案

我相信这是为了支持 Chameleon 命名空间并避免 Chameleon 组件的名称冲突而设计的。我的意思是,通过不提供命名空间,我们默认采用变色龙设计。但是,当您不提供 targetNamspace 作为默认 namspace 时,您最终会遇到问题和错误。

注:部分内容摘自XFront.com

一套集体开发的模式设计指南

以下是您的一般规则:
除了无命名空间模式之外,每个 XML 模式都至少使用两个命名空间 - targetNamespace 和 XMLSchema 命名空间。关于处理这两个命名空间,有三种设计模式的方法:

  • 使 XMLSchema 成为默认命名空间,并明确限定对 targetNamespace 中组件的所有引用。
  • 反之亦然 - 使 targetNamespace 成为默认命名空间,并明确限定来自 XMLSchema 命名空间的所有组件。
  • 不要使用默认命名空间 - 显式限定对 targetNamespace 中组件的引用,并显式限定 XMLSchema 命名空间中的所有组件。

  • 关于哪种方法是正确的,确实没有最佳实践。首先,这完全取决于设计师。

    不过,在我的研究中,我发现:
    - 限定用于构造模式的组件(模式、元素、complexType、序列等)通常不会造成混淆,因为限定符始终相同。也就是说,人们习惯于看到 xsd:schema、xsd:element 等。
  • 另一方面,targetNamespaces 可能因模式而异。因此,一个人可能生成的命名空间前缀可能会有很大差异。例如,lib:Book、boston:subway。这种可变性常常是混淆的根源。

  • 我希望这回答了你的问题。

    关于xml - 为什么要限定实例文档中的全局元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416700/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com