gpt4 book ai didi

xml - 每个命名空间都有一个 targetNamespace 吗?

转载 作者:行者123 更新时间:2023-12-04 05:52:58 27 4
gpt4 key购买 nike

我已经使用 XML 有一段时间了,但是我刚刚使用了一些东西,但并没有真正理解它们为什么会这样工作。现在我想改变它。

这个问题是关于命名空间的。

这是我认为到目前为止我已经理解的内容:

  • 命名空间可以是任何字符串。它旨在成为世界范围内的唯一标识符。
  • 为了使用命名空间限定 XML 元素,您不能简单地在元素名称前面添加命名空间前缀,您需要使用单独的前缀,该前缀需要在要应用命名空间的范围的开头声明。
  • 您可以自由选择前缀。
  • 您不能自由选择命名空间 (?)
  • 尽管命名空间不一定将任何内容作为 URL 引用,但它可以很好地引用 targetNamespace。

  • 现在,我的问题是,每个命名空间都引用一个 targetNamespace 吗?当我将 xsi 声明为 XML Schema 的前缀时,XML Schema 是否在某处声明了与其 targetNamespace 相同的命名空间? (在哪里?)。当我将 xsl 声明为 XSLT 命名空间的前缀时,这是否意味着 XSLT 命名空间在某处声明为 targetNamespace(在哪里?)?

    如果我们可以拥有不引用 targetNamespace 的命名空间,我们会在什么情况下使用它们?我们为什么需要它们?

    最佳答案

    你做得很好,直到

  • 您不能自由选择命名空间 (?)

  • 您是否可以自由选择命名空间取决于您想要做什么。如果您正在编写一个新词汇表,您可以选择命名空间(或不选择命名空间)。如果您想使用现有词汇表,例如 XHTML 或 MathML 或 DocBook 或...,那么当然,您必须使用指定的 namespace 。
  • 尽管命名空间不一定将任何内容作为 URL 引用,但它可以很好地引用 targetNamespace。

  • 我想这里有术语问题,所以我不确定你的意思。命名空间规范本身没有任何“targetNamespace”的概念。该术语用于 w3c XML 模式来说明模式中描述的元素来自模式的“目标 namespace ”的哪个 namespace 。因此,它不是一个可以真正应用于 XML 文档中命名空间的单个实例的术语。

    所以....

    Now, my question, does every namespace reference a targetNamespace ?



    如上所述,我不确定这个问题是否有意义,但答案基本上是“否”。

    When I declare xsi to be the prefix for XML Schema, does XML Schema declare that same namespace as its targetNamespace somewhere ?



    有一个模式模式声明了传统上用于 xsi 前缀的属性,从这个意义上说,它将将此命名空间作为其目标命名空间,是的。

    If we can have namespaces without any reference to a targetNamespace, in what situations would we use them? Why would we need them ?



    任何未引用 XSD 架构定义的命名空间都没有任何可以称为 targetNamespace 的东西。但是,如果您有基于 XSD 的工作流,您始终可以创建这样的架构,无论是从头开始还是通过转换 DTd 或 RelaxNg 架构。因此,命名空间是否存在 XSD 架构并不是命名空间的固有属性。例如 XHTML 命名空间 http://www.w3.org/1999/xhtml很长一段时间(再次,在它的 html5 化身中)没有任何官方 XSD 模式关联该 URI 作为其目标命名空间。

    关于xml - 每个命名空间都有一个 targetNamespace 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856139/

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