使用 pureXML 构建通用组件库
2010-05-31 00:00:00 来源:WEB开发网除了组件的功能、接口、实现和编目信息,本例 XML 描述中还包含组件的编码(compID)、引用(reference)及实体名称(entity),其具体含义如下。
组件编码,是每一个组件的身份识别,即唯一编号,可能由数字或字母等字符构成;
引用,是调用组件的直接操作名称,即 Java 类的方法名;
实体名称,组件对应的 Java 类的全局指示符,即完整的类名。在基于组件的软件开发框架或工具中,通过 Java 的反射机制创建该类的实例。
2. 组件的 XML Schema
如同传统的关系型数据可以通过约束(constraint)保证数据的有效性和完整性一样,XML 数据也可以通过一定的技术方法保证其有效性和完整性,这种方法就是通过 XML Schema 来实现的。XML Schema 定义了 XML 文档的组成元素 / 属性的名称、类型、在文档中出现的次数、顺序,进而定义了这些要素构成的 XML 文档结构。
对于清单 1 的 XML 描述,可以使用如下 XML Schema 予以约束。
清单 2. 组件的 XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:cs="http://www.w3.org/2009/09/componentBase"
targetNamespace="http://www.w3.org/2009/09/componentBase"
elementFormDefault="qualified">
<xs:element name="input" type="cs:InputType"/>
<xs:complexType name="InputType">
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="meaning" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="output" type="cs:OutputType"/>
<xs:complexType name="OutputType">
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="meaning" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="interface" type="cs:InterfaceType"/>
<xs:complexType name="InterfaceType">
<xs:sequence>
<xs:element ref="cs:input" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="cs:output" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="implement" type="cs:ImplementType"/>
<xs:complexType name="ImplementType">
<xs:attribute name="type" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="catalog" type="cs:CatalogType"/>
<xs:complexType name="CatalogType">
<xs:sequence>
<xs:element name="detail" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="component" type="cs:ComponentType"/>
<xs:complexType name="ComponentType">
<xs:sequence>
<xs:element name="function" type="xs:string"/>
<xs:element ref="cs:interface"/>
<xs:element ref="cs:implement"/>
<xs:element ref="cs:catalog"/>
</xs:sequence>
<xs:attribute name="compID" type="xs:string" use="required"/>
<xs:attribute name="reference" type="xs:string" use="required"/>
<xs:attribute name="entity" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
更多精彩
赞助商链接