xmlns、xmlns:xsi、xsi:schemaLocation 和 targetNamespace?
xmlns, xmlns:xsi, xsi:schemaLocation, and targetNamespace?
对于以下 XML 片段:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns
、xmlns:xsi
和 xsi:schemaLocation
属性的确切含义是什么?它们有什么关系? :
有什么用?
xsi:schemaLocation=
中有 2 个 URL
- http://maven.apache.org/POM/4.0.0(刚好和
xmlns
一样但是访问的时候报404错误。)
- http://maven.apache.org/xsd/maven-4.0.0.xsd(这是一个实际的 XSD 文档)
如果 1 不存在,为什么还要放在那里?
xmlns
定义了默认命名空间,它指出,项目节点中所有没有命名空间别名的节点默认都在 http://maven.apache.org/POM/4.0.0
命名空间中。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
定义命名空间 - http://www.w3.org/2001/XMLSchema-instance
,并给它一个新的别名 - xsi
xsi:schemaLocation
是 "http://www.w3.org/2001/XMLSchema-instance"
命名空间的属性 schemaLocation
。它包含成对的值 - 命名空间 URI 和架构位置 link 用于 xsd- 该命名空间的架构文件。它可以包含多对值 - 每个定义的命名空间 URI 对应一个 xsd 文件。这意味着 link http://maven.apache.org/xsd/maven-4.0.0.xsd
包含具有 http://maven.apache.org/POM/4.0.0
命名空间定义的 xsd 模式。
Namespace XML 和 XML 架构中的相关属性 (XSD)
xmlns
is part of the W3C Namespaces in XML Recommendation:
The prefix xmlns is used only to declare namespace bindings and
is by definition bound to the namespace name
http://www.w3.org/2000/xmlns/.
在您的示例中,它声明 http://maven.apache.org/POM/4.0.0
是 Maven 项目中元素的默认名称space。
xmlns:xsi
为 XSD 中使用的核心名称space 声明标准名称space 前缀(xsi
):http://www.w3.org/2001/XMLSchema-instance
XML Schema: Structures also defines several attributes for direct use
in any XML documents. These attributes are in a different namespace,
which has the namespace name
http://www.w3.org/2001/XMLSchema-instance. For brevity, the text and
examples in this specification use the prefix xsi: to stand for this
latter namespace; in practice, any prefix can be used.
在您的示例中,它声明了 xsi
名称space 前缀到 http://www.w3.org/2001/XMLSchema-instance
的常规绑定,它正确地设置了使用以下属性:
xsi:type
allows an XML instance to associate element type information directly rather than through an XSD. See
在你的例子中,xsi:type
没有被使用;此处包括有关 xsi
.
的完整性
xsi:nil
允许在 XSD 可能不允许的情况下将空元素视为有效。
在你的例子中,xsi:nil
没有被使用;此处包括有关 xsi
.
的完整性
xsi:schemaLocation
and xsi:noNamespaceSchemaLocation
向 XML 处理器提供有关如何将 XSD 与 XML 文档相关联的提示。有名字时使用xsi:schemaLocation
space;没有名字时使用xsi:noNamespaceSchemaLocation
space.
在你的例子中,有一个名称space,所以你正确使用xsi:schemaLocation
,其值是space分隔对 of namespace and XSD-位置-URI。您的示例使用 namespace、http://maven.apache.org/POM/4.0.0
,而 namespace 是 need not be retrivable 的词法命名结构。您的示例还使用了 XSD-location-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd
,它应该是可检索的。
如果您的示例没有使用名称space,您将使用 xsi:noNamespaceSchemaLocation
,其值是单个 XSD-位置-URI 提示预期 XSD 的位置并且应该是可检索的。
targetNamespace
是 xs:schema
根上的一个属性
XSD 的元素指定根元素的名称space
在 XML 个文档实例中,XSD 旨在管理。它必须
匹配 XML 文档根目录的默认或显式名称 space
元素.
对于以下 XML 片段:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns
、xmlns:xsi
和 xsi:schemaLocation
属性的确切含义是什么?它们有什么关系? :
有什么用?
xsi:schemaLocation=
- http://maven.apache.org/POM/4.0.0(刚好和
xmlns
一样但是访问的时候报404错误。) - http://maven.apache.org/xsd/maven-4.0.0.xsd(这是一个实际的 XSD 文档)
如果 1 不存在,为什么还要放在那里?
xmlns
定义了默认命名空间,它指出,项目节点中所有没有命名空间别名的节点默认都在 http://maven.apache.org/POM/4.0.0
命名空间中。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
定义命名空间 - http://www.w3.org/2001/XMLSchema-instance
,并给它一个新的别名 - xsi
xsi:schemaLocation
是 "http://www.w3.org/2001/XMLSchema-instance"
命名空间的属性 schemaLocation
。它包含成对的值 - 命名空间 URI 和架构位置 link 用于 xsd- 该命名空间的架构文件。它可以包含多对值 - 每个定义的命名空间 URI 对应一个 xsd 文件。这意味着 link http://maven.apache.org/xsd/maven-4.0.0.xsd
包含具有 http://maven.apache.org/POM/4.0.0
命名空间定义的 xsd 模式。
Namespace XML 和 XML 架构中的相关属性 (XSD)
xmlns
is part of the W3C Namespaces in XML Recommendation:The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/.
在您的示例中,它声明
http://maven.apache.org/POM/4.0.0
是 Maven 项目中元素的默认名称space。xmlns:xsi
为 XSD 中使用的核心名称space 声明标准名称space 前缀(xsi
):http://www.w3.org/2001/XMLSchema-instance
XML Schema: Structures also defines several attributes for direct use in any XML documents. These attributes are in a different namespace, which has the namespace name http://www.w3.org/2001/XMLSchema-instance. For brevity, the text and examples in this specification use the prefix xsi: to stand for this latter namespace; in practice, any prefix can be used.
在您的示例中,它声明了
xsi
名称space 前缀到http://www.w3.org/2001/XMLSchema-instance
的常规绑定,它正确地设置了使用以下属性:xsi:type
allows an XML instance to associate element type information directly rather than through an XSD. See在你的例子中,
xsi:type
没有被使用;此处包括有关xsi
. 的完整性
xsi:nil
允许在 XSD 可能不允许的情况下将空元素视为有效。在你的例子中,
xsi:nil
没有被使用;此处包括有关xsi
. 的完整性
xsi:schemaLocation
andxsi:noNamespaceSchemaLocation
向 XML 处理器提供有关如何将 XSD 与 XML 文档相关联的提示。有名字时使用xsi:schemaLocation
space;没有名字时使用xsi:noNamespaceSchemaLocation
space.在你的例子中,有一个名称space,所以你正确使用
xsi:schemaLocation
,其值是space分隔对 of namespace and XSD-位置-URI。您的示例使用 namespace、http://maven.apache.org/POM/4.0.0
,而 namespace 是 need not be retrivable 的词法命名结构。您的示例还使用了 XSD-location-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd
,它应该是可检索的。如果您的示例没有使用名称space,您将使用
xsi:noNamespaceSchemaLocation
,其值是单个 XSD-位置-URI 提示预期 XSD 的位置并且应该是可检索的。
targetNamespace
是xs:schema
根上的一个属性 XSD 的元素指定根元素的名称space 在 XML 个文档实例中,XSD 旨在管理。它必须 匹配 XML 文档根目录的默认或显式名称 space 元素.