1.名称空间
名称空间是W3C推荐标准提供的一种统一命名XML文档中的元素和属性的机制。使用名称空间可以明确标识和组合XML文档中来自不同标记词汇表的元素和属性,避免了名称之间的冲突。
1.1声明名称空间
名称空间声明的一般形式为:第一部分是一个关键字xmlns:,第二部分是名称空间的前缀,第三部分是一个等号,第四部分是双引号,将第五部分的名称空间标识URI包括起来。需要注意的是,名称空间的前缀不能为xml,因为在XML中这个字符串是保留作特殊用途的。例:
xmlns:river=”http://www.testriver.com/”//其中river为前缀。
还可以隐式声明名称空间,即省略掉冒号和名称空间前缀。例:
xmlns=”http://www.testriver.com/”
1.2 使用名称空间
1.2.1 在XML文档中使用名称空间
在XML中,名称空间的使用涉及范畴的概念,范畴即名称空间的覆盖范围,它指的是哪些元素和属性在该名称空间中,哪些不在该名称空间中。名称空间既可以限定整个XML文档,也可以只针对XML文档中的一部分。
1.2.2示例:名称空间限定整个XML文档
1.2.3示例:名称空间只针对XML文档中的一部分
1.2.4示例:嵌套的名称空间
此例中,除了元素sex被定义在新的名称空间中外,其余的元素仍然使用原来的名称空间。
1.3 在XML Schema中使用名称空间
1.3.1 Schema中的全局成分
全局成分指的是元素xsd:schema的直接子节点,包括元素声明、属性声明、复杂\简单类型定义、组定义、属性组定义。
1.3.2 Schema中的非全局成分
有时希望将非全局成分定义在目标空间中去,可使用下面方法。
属性elementFormDefault的默认值是unqualified,也就是规定了只有全局成分才被定义在目标名称空间中。将elementFormDefault的值赋为qualified,使得目标名称空间包含非全局的元素定义。同样,使属性attributeFormDefault的值赋为qualified,可使得目标名称空间包含非全局属性定义。如下:
也可以修改属性form的值,使得某些非全局成分不包含在名称空间中。如下:
2.一个XML Schema
下面的例子是一个XML Schema文件,名为"note.xsd"。
3.一个与XML Schema相关联的XML文档
下面的XML文档和上文给出的XML Schema相关联,名为"note.xml"。并且下文的讨论将围绕这两个文档展开。
4.XSD-<schema>元素
<schema>元素是每个XML Schema的根元素:
<?xml version="1.0"?>
<xsd:schema>
...
...
</xsd:schema>
<schema>元素可以包含一些属性。一个schema声明通常如下所示:
我们再来看由该schema规定的XML文档note.xml的开头将是什么样子:
5.targetNamespace
xsd文件中定义了一个targetNameSpace后,其内部定义的元素,属性,类型等都属于该targetNameSpace,其自身或外部xsd文件使用这些元素,属性等都必须从定义的targetNameSpace中找。修改一下note.xsd,去除默认名称空间的声明,并添加一个复杂类型:
6. schemaLocation
schemaLocation 属性引用具有目标名称空间的 XML 架构文档(.xsd)。该xml文件中用到的所有新创的元素、属性等的.xsd文件都必须在这里声明。
<xsi:schemaLocation="list of anyURI" >
6.1属性
anyURI (list)
一个架构位置,该架构包含限定的(具有名称空间的架构)架构构造。每一对中的第一个 URI 引用是名称空间名称,第二个则是描述名称空间的架构的位置。
6.2 备注
该属性将具有目标名称空间的 XML 架构文档(.xsd)与实例文档(.xml)相关联。 不要求 XML 架构有名称空间。若要为没有目标名称空间的 XML 架构指定位置,请使用 noNamespaceSchemaLocation 属性。此属性中引用的 XML 架构不能有目标名称空间。因为此属性不接受 URL 列表,所以只能指定一个架构位置。
将具有目标名称空间的架构文档与实例文档相关联。可以列出多对 URI 引用,每一对都有不同的名称空间名称部分。
根据万维网联合会 (W3C) XML 架构建议,XML 实例文档可以同时指定 xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation 属性。此外,还可以多次列出同一个命名空间。
6.3 示例
以下示例显示如何使用 xsi:schemaLocation 属性为多个 XML 架构文档提供位置信息。
7.noNamespaceSchemaLocation
noNamespaceSchemaLocation 属性引用没有目标名称空间的 XML 架构文档。
<xsi:noNamespaceSchemaLocation="anyURI" >
7.1属性
anyURI
一个架构位置,该架构包含非限定的(没有名称空间的架构)架构构造。
7.2备注
不要求 XML 架构有名称空间。若要为没有目标名称空间的 XML 架构指定位置,请使用 noNamespaceSchemaLocation 属性。此属性中引用的 XML 架构不能有目标名称空间。因为此属性不接受 URL 列表,所以只能指定一个架构位置。
根据万维网联合会 (W3C) XML 架构建议,XML 实例文档可以同时指定 xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation 属性。
7.3示例
以下示例显示如何对包含非限定元素的实例文档使用 xsi:noNamespaceSchemaLocation 属性。
出自 51CTO.COM博客
相关推荐
XML Schema,全称为XML Schema Definition,是用于定义XML文档结构和数据类型的规范,它是W3C(World Wide Web Consortium)制定的一种标准。在本实验"西工大服务计算实验2-1_XML Schema"中,你的任务是编写一个程序...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema> ``` 3. **资料集预览**: - 在 Visual Studio 中打开 XML Schema 文件,并切换到资料集视图。 - 预览资料集...
**XMLSchema库详解** XMLSchema(XML Schema)是一种用于定义XML文档结构和数据类型的规范,它为XML提供了形式化的语义定义。在Python编程环境中,有许多库用于处理XML,但`xmlschema`库是一个专门针对XML Schema的...
《使用dotnet-XmlSchemaClassGenerator从XMLSchema文件生成C#类》 在.NET开发过程中,处理XML数据是一项常见的任务。XML Schema(XSD)文件是定义XML文档结构和数据类型的规范,它允许我们对XML数据进行严格的约束...
在这个例子中,使用`newInstance()`方法创建了一个新的`SchemaFactory`实例,指定的协议是`http://www.w3.org/2001/XMLSchema`,这是XSD的命名空间。 2. **Schema**: `Schema` 对象是根据XSD文件创建的,它包含了...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ``` 2. **元素定义**:XML Schema通过`<xs:element>`标签定义XML文档中的元素。例如,定义一个名为`name`的元素,用于描述人的姓名: ```xml ``` 这里`...
1. **XML Schema基本概念**:了解XML Schema的基本组成,包括命名空间(Namespace)、元素(Element)、属性(Attribute)和数据类型(Datatype)。 2. **元素(Element)**:学习如何定义XML文档中的元素,包括...
XmlSchema,全称为XML Schema Definition,是XML标准的一部分,用于定义XML文档的结构和数据类型。它是DTD(Document Type Definition)的替代品,提供了一种更强大、更灵活的方式来规范XML文档的内容和格式。在本...
目标命名空间(Target Namespace)是XML Schema中的一个关键概念,它用于区分不同来源的数据。声明目标命名空间并在XML数据文档中正确引用,可以防止元素名称冲突,确保不同Schema之间的互操作性。 课后实践部分,...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema> ``` #### XSD 字符串数据类型 XML Schema 定义了一系列字符串相关的数据类型,如 `xs:string`、`xs:normalizedString`、...
"XML中的xmlns、xmlns:xsi和xsi:...在上面的代码中,xmlns="http://maven.apache.org/POM/4.0.0"定义了命名空间,xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"定义了XML schema实例,xsi:schemaLocation=...
使用assembly插件打包jar后启动时,总是出现Unable to locate Spring NamespaceHandler for XML schema....错误,网上找了各种方法都没有用,在尝试了100+失败后,解决了这个问题,在打包的jar中,META-INF目录下,...
The XML Data Reduced schema definition language (XDR), which Microsoft introduced support for top assist with XML schema working needs while awaiting the now final W3C standard XML Schema Definition ...
在 XML 中,开发者可以使用多种技术来定义一个 XML 文档的结构,包括 DTD、XML Schema、Namespace 和 UML 等。其中,DTD(Document Type Definition)是 XML 文档的结构定义的传统方法,它使用一系列声明来定义文档...
6. **Namespace和QName**: 在处理包含命名空间的XML时,JAXB使用`javax.xml.namespace.QName`来表示带有命名空间的元素和属性。`QName`包含了本地名称和命名空间URI。 7. **自定义转换**: 当标准注解无法满足需求时...
2. **创建XML Schema文件**:为了使XMLBean能够理解XML文档的结构,需要创建一个XML Schema文件(例如`customer.xsd`),用于描述XML文档的结构。 3. **配置XMLBean**:创建一个配置文件(例如`config.xml`),指定...
在Spring框架中,Schema是一种定义XML文档结构的规范,它通过一系列的命名空间(namespace)和元素(element)来定义Bean的属性和行为。例如,`<beans>`元素是Spring配置的基本容器,而`<bean>`元素则用来声明一个...
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:tool="http://www.springframework.org/schema/tool" targetNamespace=...
2. **命名空间(Namespace)**:在处理多个Schema时,命名空间可以避免元素和属性名称的冲突。通过使用前缀和URI,我们可以将元素与特定的Schema关联起来。 3. **复杂类型(Complex Type)**:复杂类型是包含一个或...