Xml 如何使用xsd命名空间

Xml 如何使用xsd命名空间,xml,xsd,namespaces,Xml,Xsd,Namespaces,我在许多地方搜索了名称空间,但没有得到满意的答案 对于以下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"

我在许多地方搜索了名称空间,但没有得到满意的答案

对于以下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规范中定义的名称。这使您可以选择编写
    或简单地编写
    。声明这两种名称没有特别的原因;最好一致地使用一种形式或另一种形式

    属性
    targetNamespace=”http://www.example.org/schema“
    表示此架构正在定义名称空间中元素(可能还有属性)的结构,该名称空间可能是您作为设计控件的名称空间(我的意思是,除了在示例中,您不应该使用特定的名称空间,因为它不是您的名称空间)

    这样的声明很常见

    xmlns:tns="http://www.example.org/schema"
    
    将前缀(在本例中为“tns”)绑定到架构的目标命名空间的。如果有一个架构组件引用同一目标命名空间中的另一个架构组件(例如引用类型的元素声明),则有两种方法:

    (1) <xs:element name="e" type="t"/>
    
    (1)
    
    当“xs”前缀绑定到“”并且默认名称空间与目标名称空间相同时,此方法有效

    (2) <element name="e" type="tns:t"/>
    
    (2)
    

    当默认名称空间为“”,且“tns”前缀绑定到目标名称空间时,此操作有效。

    首先,两个声明:

    xmlns:xs="http://www.w3.org/2001/XMLSchema"  
    xmlns="http://www.w3.org/2001/XMLSchema"
    
    (2) <element name="e" type="tns:t"/>
    
    指出前缀为“xs”的名称和非固定名称都表示W3C XSD规范中定义的名称。这使您可以选择编写
    或简单地编写
    。声明这两种名称没有特别的原因;最好一致地使用一种形式或另一种形式

    属性
    targetNamespace=”http://www.example.org/schema“
    表示此架构正在定义名称空间中元素(可能还有属性)的结构,该名称空间可能是您作为设计控件的名称空间(我的意思是,除了在示例中,您不应该使用特定的名称空间,因为它不是您的名称空间)

    这样的声明很常见

    xmlns:tns="http://www.example.org/schema"
    
    将前缀(在本例中为“tns”)绑定到架构的目标命名空间的。如果有一个架构组件引用同一目标命名空间中的另一个架构组件(例如引用类型的元素声明),则有两种方法:

    (1) <xs:element name="e" type="t"/>
    
    (1)
    
    当“xs”前缀绑定到“”并且默认名称空间与目标名称空间相同时,此方法有效

    (2) <element name="e" type="tns:t"/>
    
    (2)
    

    当默认名称空间为“”,且“tns”前缀绑定到目标名称空间时,此选项有效。

    请尝试W3Schools教程。这不是接受XML名称空间等基础知识培训的地方。请尝试W3Schools教程。这不是接受XML名称空间等基础知识培训的地方。
    (2) <element name="e" type="tns:t"/>