与DTD(http://code727.iteye.com/blog/1882877)相比较,Schema是另一种灵活但复杂的XML约束方式。它主要增加了更多的数据类型和结构模式来改进DTD,并使用XML作为约束格式描述。
1.定义Schema约束规则
与DTD(http://code727.iteye.com/blog/1882877)相比较,Schema是另一种灵活但复杂的XML约束方式。它主要增加了更多的数据类型和结构模式来改进DTD,并使用XML作为约束格式描述。
1.定义Schema约束规则
<?xml version="1.0" encoding="UTF-8"?> <templet> <bean name="user" class="com.daniele.appdemo.test.domain.User"> <property name="id" type="java:long"/> <property name="name" type="java:string" /> <property name="age" type="java:integer"/> <property name="mail" type="java:string" /> <property name="company" ref="company" /> </bean> <bean name="company" class="com.daniele.appdemo.test.domain.Company"></bean> <description date="2013-06-07">This is a XML Schema example.</description> <author name="daniele" /> <end/> </templet>文档约束规则:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.appdemo.daniele.com/schema/templet" targetNamespace="http://www.appdemo.daniele.com/schema/templet"> <!-- 定义XML根元素temple,其内有0个或多个bean元素 --> <xsd:element name="templet"> <!-- complexType元素表示templet是一个复合类型, 属性为false,表示它只能包含元素。 否则,为true(默认)表示同时还可包含文本。 --> <xsd:complexType mixed="false"> <!-- 定义子元素组必须按照其sequence内部定义时的顺序出现一次(默认为有且只出现一次) 次数可通过minOccurs和maxOccurs这两个属性来控制。 --> <xsd:sequence> <!-- 通过ref属性值,引用其他元素作为当前元素的子元素。 如果在schema中定义了目标名称空间,则ref值为"名称空间前缀:子元素名", 否则直接关联子元素名(对应另一个element元素的name属性值)即可。 --> <xsd:element ref="tns:bean" minOccurs="0" maxOccurs="unbounded"/> <xsd:element ref="tns:description" minOccurs="0" maxOccurs="1"/> <xsd:element ref="tns:author" minOccurs="0" maxOccurs="1"/> <xsd:element ref="tns:end" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="bean"> <xsd:complexType> <!-- 按顺序出现0次(minOccurs="0")或多次(maxOccurs="unbounded")其内部引用的元素 --> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="tns:property" /> </xsd:sequence> <!-- 定义当前元素具备的属性。 1)name:属性名 2)type:属性值类型 3)use:可选性。 required:必须,optional:可选(默认),prohibited:禁用 当为可选时,可以不用设置该属性。 --> <xsd:attribute name="class" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="property"> <xsd:complexType mixed="false"> <xsd:attribute name="name" type="xsd:string" use="required" /> <!-- 如果某个属性值具有备选值,则利用<xsd:simpleType> 和<xsd:restriction>这两个元素来替代type属性 --> <xsd:attribute name="type" default="java:string"> <!-- 表示当前属性的值为简单类型 --> <xsd:simpleType> <!--表示当前属性备选值限定的类型 --> <xsd:restriction base="xsd:string"> <!-- 备选值定义 --> <xsd:enumeration value="java:boolean" /> <xsd:enumeration value="java:byte " /> <xsd:enumeration value="java:char" /> <xsd:enumeration value="java:double" /> <xsd:enumeration value="java:float" /> <xsd:enumeration value="java:long" /> <xsd:enumeration value="java:integer" /> <xsd:enumeration value="java:short" /> <xsd:enumeration value="java:string" /> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="ref" type="xsd:string" /> </xsd:complexType> </xsd:element> <!-- description元素只包含文本和属性date --> <xsd:element name="description"> <xsd:complexType> <xsd:simpleContent> <!-- 文本类型为任意字符 --> <xsd:extension base="xsd:string"> <!-- 定义description元素的可选的date属性,其值必须符合日期时间类型 如果不在extension中定义任何attribute,则表示当前元素只能包含文本内容 --> <xsd:attribute name="date" type="xsd:date"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <!-- 定义只有一个必选name属性的author元素,不能有子元素和文本内容 --> <xsd:element name="author"> <xsd:complexType mixed="true"> <xsd:attribute name="name" use="required"/> </xsd:complexType> </xsd:element> <!-- 定义为空的end元素,即不能任何有子元素、文本内容和属性 --> <xsd:element name="end"> <xsd:complexType /> </xsd:element> </xsd:schema>
<?xml version="1.0" encoding="UTF-8"?> <!-- 无命名空间引入 --> <!-- <templet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schame_test.xsd"> --> <!-- 命名空间引入 --> <templet xmlns="http://www.appdemo.daniele.com/schema/templet" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.appdemo.daniele.com/schema/templet schame_test.xsd"> <bean name="user" class="com.daniele.appdemo.test.domain.User"> <property name="id" type="java:long"/> <property name="name" type="java:string" /> <property name="age" type="java:integer"/> <property name="mail" type="java:string" /> <property name="company" ref="company" /> </bean> <bean name="company" class="com.daniele.appdemo.test.domain.Company"></bean> <description date="2013-06-07">This is a XML Schema example.</description> <author name="daniele" /> <end/> </templet>
相关推荐
"XML Schema知识点" XML Schema是XML语言为基础的,它用于可替代DTD。它用于描述XML文档的结构。XML Schema语言也被...XML Schema是XML文档的结构描述语言,它具有强大的功能和可扩展性,是XML文档的标准描述语言。
XML Schema(通常缩写为XSD)则是为XML文档定义结构和数据类型的规范,它允许我们对XML文档进行更严格的约束,确保数据的一致性和准确性。这篇博客文章“根据XML Schema生成XML”探讨了如何使用XML Schema来创建符合...
为了确保XML文档的结构正确性与一致性,XML约束技术应运而生,主要有两种形式:DTD(Document Type Definition)和XML Schema。 **DTD(Document Type Definition)** DTD是XML的早期约束和验证机制,它定义了XML...
同时,本实验也可以帮助学生更好地理解XML文档的结构和约束,并掌握如何使用XML Schema来描述和验证XML文档。 知识点: 1. XML Schema的定义和应用 XML Schema是一种基于XML的模式语言,用于定义XML文档的结构和...
本篇文章将深入探讨如何根据XML文件生成对应的XSD schema文件,以便更好地管理和验证XML文档。 首先,我们需要理解XSD的作用。XSD文件定义了一系列规则,这些规则描述了XML文档应该包含哪些元素、属性,以及它们...
5. **XmlSchema类**:该类用于加载和处理XML Schema文件,可以创建一个XmlSchema对象来读取XSD文件,并构建出XML文档必须遵循的结构模型。 6. **XmlDocument类**:此类代表XML文档,提供加载XML数据、验证文档以及...
XML Schema是目前国际标准的XML建模工具,本文将对XML Schema进行详细的介绍,帮助读者初步掌握XML Schema的使用方法和XML Schema文档实例的具体语义。 1. 命名空间的使用 XML Schema中命名空间的使用是非常重要的...
XML Schema使用XML语法来定义XML文档的结构和数据类型,这意味着它能够表达更复杂的约束,如数据类型限制、命名空间支持和默认值设定。例如,一个XML Schema声明可能如下: ```xml <xs:schema xmlns:xs=...
XML Schema是XML文档的约束机制,用于定义XML文档的结构和内容。它是XML 1.0规范的一部分,提供了一个强大的工具来描述和验证XML文档。 XML Schema的优点是: * 强大的描述能力:XML Schema可以定义复杂的数据类型...
- 引用Schema:在XML文档中通过`<xs:schema>`引用Schema文件。 - 验证文档:使用XML解析器或工具检查XML文档是否符合Schema定义。 5. XML Schema与DTD的对比 - 功能:XML Schema提供了更丰富的数据类型和约束,而...
通过调用其`validate()`方法,可以检查XML文档是否满足Schema的约束。 使用Apache XML Schema API,开发者可以实现以下功能: - 验证XML文档:创建`Validator`对象,然后使用它来验证XML文档是否符合XML Schema。 -...
通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...
在“XMLSchema例子”文件中,你将看到这些概念如何实际应用于具体的XML Schema定义和XML文档实例。通过学习和理解这些例子,你将能够更好地掌握XML Schema的使用,从而更有效地设计和验证XML文档的结构。
XML DTD(Document Type Definition)和XML Schema是两种主要的XML语义约束机制,用于定义XML文档的结构和数据类型。 XML DTD是最早的XML文档类型定义方式,它使用一套预定义的元素和属性来描述XML文档的结构。DTD...
3. 可重用性:XML Schema文件可以在多个XML文档中重用,减少了开发和维护的成本。 4. 验证性:XML Schema提供了一个强大的工具来验证XML文档的结构和内容,确保了数据的正确性和一致性。 XML Schema的应用 1. 数据...
2. 在 XML 文档中引用 Schema 文件,通过 `xmlns:xsi` 命名空间和 `xsi:schemaLocation` 属性实现。 3. 验证 XML 文档:XML 解析器或验证工具会根据 Schema 对文档进行验证,发现并报告任何不符合 Schema 规则的问题...
5. **约束和验证**:Schema提供了一种强大的方式来约束XML文档的结构,包括元素的数量、顺序、出现次数、数据类型等。这有助于确保XML数据的准确性和一致性。在处理XML数据时,可以使用Schema进行验证,以检查文档...
XML Schema,简称XSD,是一种用于定义XML文档结构和数据类型的规范。`XmlSchema-1.4.6.jar` 是一个包含Java绑定的XML Schema API的库,它为处理XML Schema文档提供了支持。在开发Web服务客户端时,尤其是与基于SOAP...