设计模式
XML Schema设计模式:Russian Doll、Salami Slice或Venetian Blind。不常用的另外两种设计模式:Garden of Eden和Ghameleon。
1、Russian Doll:
(1)、具有的特点:
- 具有单个全局根元素。
- 所有类型都有局部类型,即嵌入在根元素中。
- 只支持用单个文件完整设计的Schema。
- 它具有高内聚低耦合。
- 由于类型被隐藏,Schema是完全封装的。
- 它是最易于阅读和编写的模式。
(2)、简易优缺点:
优点:易于阅读和编写;结果可以预期;容易理解作者的意图;完全自包含,改变类型将不会影响其他的Schema。
缺点:精心定义的类型无法在别处重复使用。
(3)、应用:用来存储隔离记录的中端上的一修改DB2文件系统表?
2、Salami Slice(具有紧密耦合)
(1)、具有的特点:
- 所有元素都是全局元素。
- 所有元素都在全局命名空间中定义。
- 所有类型都是局部类型。
- 元素声明从不嵌套。
- 元素声明可以重复使用。Salami Slice使你最有可能重复使用所有Schema设计模式。
- 很难确定目标根元素,因为存在许多潜在选项。
(2)、简易优缺点:
优点:元素全局声明,生成的Schema可以被重复使用;
缺点:改变某个元素会影响组合的元素;
3、Venetian Blind
具有的特点:
- 具有单个全局根元素。
- 混合有全局和局部声明。这与Russian Doll和Salami Slice形成对比;Russian Doll中的所有类型都是局部的,Salami Slice中的所有类型都是全局的。
- 既具有高内聚,又具有高耦合。由于其组件是耦合的,不是自包含的,它可以不时地和其他Schema耦合。
- 它最大化了重复使用,所有类型和根元素都可以重新组合。
- 由于类型是可见的,因此封装是有限的。
- 允许你使用多个文件定义Schema。比较冗长。将每个类型拆分,使你可以对各个单个方面或元素进行非常有选择性的粒度控制,不过这会使用键入的内容非常多。
4、Garden of Eden
Garden of Eden Schema设计模式由Sun Microsystems确立,它是Salami Slice 和 Venetian Blind的组合。要是Schema采用这种模式,可以在全局命名空间中定义所有的元素和类型,然后根据需要引用相应元素。
5、Chameleon
Chameleon模式非常灵活,它的方式是让你在命名空间的Schema(称为Chameleon)中设计常见类型,然后定义一个主Schema,这个Schema在自己的命名空间中通过<include>将第一个Schema包含进来,Chameleon中的常见类型被强制赋予命名空间,使用的是主Schema中定义的命名空间。
Chameleon设计模式的使用是饱受争议的。Chameleon依赖于Schema规范中的一些方面,而对于这些方面的解释,供应商们并不是完全赞同。此外,Chameleon通常会在验证过程中降低性能,哪怕是从支持它的供应商进行验证,这是命名空间解决方案的延迟妨碍了分析器基于命名空间来缓存Schema的组件。Chameleon还使XPath身份约束的使用受到限制。XPath不使用默认的命名空间。
相关推荐
在“XMLSchema经典例题”中,我们可以深入探讨以下几个核心知识点: 1. **基本元素和类型定义**:XML Schema允许定义基本数据类型,如字符串、整数、浮点数等,并且可以自定义复杂的数据类型。例如,你可以创建一个...
1. **命名空间**:XML Schema支持命名空间,使得可以在同一文档中定义多个独立的XML模式,避免了元素和属性名的冲突。 2. **数据类型**:XML Schema提供了丰富的内置数据类型,如字符串、整数、浮点数、日期等,还...
在阅读《XmlSchema_manual》这份参考手册时,你会了解到如何编写XML Schema文档,包括基本的元素和属性声明、数据类型定义、模式组合和约束设定等内容。手册还将详细介绍如何在实际应用中验证XML文档是否符合Schema...
### W3C XML Schema 模式的设计方法研究 #### 引言 W3C XML Schema是一种用于描述XML文档结构和内容的模式语言,由万维网联盟(World Wide Web Consortium,W3C)制定,旨在提供一个标准化的方法来定义XML文档的...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn file:///D:/_dev_stu/xsdtest/src/note.xml"> <to>George <from>John <heading>Reminder <body>Don'...
7. **继承与重用**:XML Schema支持类型继承,一个类型可以从另一个类型派生,简化了模式设计。同时,可以通过引用(import)机制来重用已定义的模式部分。 8. **混合内容模型**:允许元素既包含文本内容又包含子...
* 入门位于 w3.org/TR/xmlschema-0,它介绍了 XML 模式文档及其设计用途 * 文档结构的标准位于 w3.org/TR/xmlschema-1,它说明了如何定义 XML 文档的结构 * 数据类型的标准位于 w3.org/TR/xmlschema-2,它定义了一些...
XML Schema(XML Schema Definition,通常缩写为XSD)是一种用于定义XML文档结构和数据类型的标准化语言,由W3C(万维网联盟)制定...通过深入学习和实践,开发者可以更好地利用XML Schema来设计和验证自己的XML文档。
#### 五、XML Schema设计选择与最佳实践 - **设计选择**: - **元素与属性的选择**:确定哪些信息作为元素,哪些作为属性。 - **类型的选择**:决定使用简单类型还是复杂类型。 - **命名空间的使用**:合理规划...
在模式文档中,根元素`<xsd:schema>`会声明`xsd`名称空间,指向`http://www.w3.org/2001/XMLSchema`,这样就限定了所有XML Schema元素和属性的使用。在实例文档中,通过`xmlns:xsi`声明`xsi`名称空间并使用`xsi:...
- **http://www.w3.org/2001/XMLSchema-instance**:这个名称空间用于表示XML Schema实例文档中的特殊属性,如`xsi:type`。 #### 三、Schema声明 Schema声明是定义XML文档结构的基础。一个完整的`<schema>`元素...
本案例探讨了两种不同的XML Schema设计模式:千层娃娃模式和黄瓜切片模式。 首先,我们来看“千层娃娃”模式。这种模式的特点是XML文档只有一个根元素,而这个根元素下可以嵌套多个层次的子元素。这种结构就像一个...
**PyPI官网下载 | xmlschema-1.2.4-py3-none-any.whl** PyPI,全称为Python Package Index,是Python社区官方的软件包仓库,为开发者提供了一个平台来发布他们的Python模块、库和其他工具。PyPI使得Python用户能够...
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
2. **开发过程概述**:Schema开发过程分为几个阶段,包括需求分析、设计、实现、测试和部署。每个阶段都需要明确的目标和详细的计划。 #### 四、XML Schema开发原则(建模要求) 1. **组织原则**:将原则按照不同...
JavaBean是一种特殊的Java类,遵循特定的命名规则和设计模式,用于封装数据和业务逻辑,常在Java应用中作为对象模型使用。 标题“java根据xml生成schema_xsd_生成javabean”涉及的知识点主要包括: 1. XML到XSD的...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove <from>Jani <heading>Reminder <body>Don't forget me this weekend! ``` XSD...