如何使用 xsd 命名空间
how to use xsd namespace
我在很多地方搜索了命名空间,但没有得到满意的答案
以下 xsd 个文件
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="product"/>
</xs:schema>
对于上面的代码,我的理解如下。如果我错了,请纠正我。我也有一些关于相同的问题:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
是存储我在当前文档中使用的所有元素和数据类型的定义的地方。
targetNamespace="http://www.example.org/schema
其实就是当前文件要存放的包名
xmlns="http://www.w3.org/2001/XMLSchema"
: 不知道这是什么
**xmlns:tns**
与 targetNamespace 相同。那为什么要单独使用呢?
第一行和第三行有什么用
首先,两个声明:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
表示前缀为"xs"和不带前缀的名称,表示其含义在W3C XSD规范中定义的名称。这使您可以选择写 <xs:element>
或简单地写 <element>
。没有特别的理由声明两者;最好始终如一地使用一种形式。
属性 targetNamespace="http://www.example.org/schema"
表示此模式正在定义命名空间 http://www.example.org/schema 中元素(可能还有属性)的结构,这可能是您作为设计控制的命名空间(通过我的意思是,除非在示例中,否则您不应该使用该特定名称空间,因为它不是您的名称空间)。
像
这样的声明很常见
xmlns:tns="http://www.example.org/schema"
将前缀(在本例中为 "tns")绑定到架构的目标命名空间。如果您有一个架构组件引用同一目标命名空间中的另一个架构组件(例如引用类型的元素声明),那么有两种方法可以做到这一点:
(1) <xs:element name="e" type="t"/>
当 "xs" 前缀绑定到“http://www.w3.org/2001/XMLSchema”并且默认命名空间与目标命名空间相同时,这有效。
(2) <element name="e" type="tns:t"/>
这在默认命名空间为“http://www.w3.org/2001/XMLSchema”且 "tns" 前缀绑定到目标命名空间时有效。
我在很多地方搜索了命名空间,但没有得到满意的答案
以下 xsd 个文件
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="product"/>
</xs:schema>
对于上面的代码,我的理解如下。如果我错了,请纠正我。我也有一些关于相同的问题:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
是存储我在当前文档中使用的所有元素和数据类型的定义的地方。targetNamespace="http://www.example.org/schema
其实就是当前文件要存放的包名xmlns="http://www.w3.org/2001/XMLSchema"
: 不知道这是什么**
xmlns:tns**
与 targetNamespace 相同。那为什么要单独使用呢?第一行和第三行有什么用
首先,两个声明:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
表示前缀为"xs"和不带前缀的名称,表示其含义在W3C XSD规范中定义的名称。这使您可以选择写 <xs:element>
或简单地写 <element>
。没有特别的理由声明两者;最好始终如一地使用一种形式。
属性 targetNamespace="http://www.example.org/schema"
表示此模式正在定义命名空间 http://www.example.org/schema 中元素(可能还有属性)的结构,这可能是您作为设计控制的命名空间(通过我的意思是,除非在示例中,否则您不应该使用该特定名称空间,因为它不是您的名称空间)。
像
这样的声明很常见xmlns:tns="http://www.example.org/schema"
将前缀(在本例中为 "tns")绑定到架构的目标命名空间。如果您有一个架构组件引用同一目标命名空间中的另一个架构组件(例如引用类型的元素声明),那么有两种方法可以做到这一点:
(1) <xs:element name="e" type="t"/>
当 "xs" 前缀绑定到“http://www.w3.org/2001/XMLSchema”并且默认命名空间与目标命名空间相同时,这有效。
(2) <element name="e" type="tns:t"/>
这在默认命名空间为“http://www.w3.org/2001/XMLSchema”且 "tns" 前缀绑定到目标命名空间时有效。