模式到实例再到模式的过程
inst2xsd工具可作为命令行实用工具使用,但用户也可以编程式地使用API。其目的是采用一个XML实例并创建一个合法模式集。该工具也是可配置的,它提供了用于指定使用哪种设计模式的选项。
该工具还能够将枚举映射到重复值,并能够根据数据类型的最小公分母创建类型。
我们使用lcd:val这个值作为创建最小公分母类型的示例。该文本可由多个内置XML Schema数据类型表示,例如字符串派生的类型(xsd:string、xsd:normalizedString、xsd:token,等等)以及QName类型。在本例中,inst2xsd特性确定类型的方式是查找前缀为lcd的命名空间声明。如果找到该前缀,该类型将是QName,而不是某个可能基于字符串的类型。
现在看一下我们从Jira接收的RSS feed的结果是什么。如果我们已经将feed保存到名为jiraRssFeed.xml的实例中并已将XMLBEANS_HOMEin放在我们的路径中,工作流将如下:
|
/home/user>inst2xsd /home/user>inst2xsd jiraRssFeed.xml -enumerations never |
这将生成名为schema0.xsd的(可配置)文件,并且模式将与下面的片断类似:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
3 <xs:element name="rss">
4 <xs:annotation>
5 <xs:documentation>RSS generated by JIRA 98...
</xs:documentation>
6 </xs:annotation>
7 <xs:complexType>
8 <xs:sequence>
9 <xs:element name="channel">
10 <xs:complexType>
11 <xs:sequence>
12 <xs:element type="xs:string" name="title"/>
13 <xs:element type="xs:anyURI" name="link"/>
14 <xs:element type="xs:string" name="description"/>
15 <xs:element type="xs:string" name="language"/>
15 <xs:element name="item" maxOccurs="unbounded"
minOccurs="0">
从这个片断中我们发现Jira RSS feed所需的所有元素均已定义。
如果用户想要通过其他方式工作,例如从XML Schema开始,XMLBeans的最新版本就提供了这种功能。xsd2inst工具就为用户提供了从模式和全局元素创建示例文档的方式;该实例将包含简单类型的值。上述两种工具的使用使得使用XML实例和模式变得非常简单。
| 共11页: 上一页 [1] [2] [3] [4] 5 [6] [7] [8] [9] [10] [11] 下一页 | ||
|