返回首页
当前位置: 主页 > 航空资料 > 计算机 >

XML高级编程上(83)

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin 点击:
  
d a t e t i m e . t z d a t e t i m e,带有可选的时区
f i x e d . 1 4 . 4 数字类型,小数点前不超过1 4位,后面不超过4位
f l o a t 实数,带有可选的符号、小数位和指数
i n t 整数
n u m b e r 通用数字类型,在位数上没有限制;可能带有可选的符号、小数位和指数
t i m e ISO 8601格式的时间组
t i m e . t z 同Ti m e,带有时区
i 1 1字节有符号整数
i 2 2字节有符号整数
i 4 4字节有符号整数
r 4 4字节有符号实数
r 8 8字节有符号实数
u i 1 1字节无符号整数
u i 2 2字节无符号整数
u i 4 4字节无符号整数
u r i U R I字符串
u u i d 1 6位表示字节并组成一个C O M类型的U U I D;连字号可选,如果有就忽略
第7章命名空间和模式使用227 下载
在Windows 2000之前的解析器版本,上面表格里描述的派生数据类型被限制用于格式正规
的XML文档。这些版本的XML-DR模式不支持验证。
7.7.1 MSXML对命名空间和模式的支持
M S X M L具有命名空间和简化的XML Data 模式预览的功能。你必须使用M i c r o s o f t的基于
C O M的X M L解析器—M S X M L,它与Internet Explorer 5.0 搭载或者如果你想在代码里支持
X M L - D R,可以从他们的站点下载。这里反复强调X M L - D R是M i c r o s o f t的技术预览,而不是
W 3 C的成就。它严格地被M i c r o s o f t所有并只由它提供支持。在早期对模式做很多支持尝试的同
时,M S X M L的X M L - D R支持潜在地对于那些想要加入到X M L元数据前线的程序员来说非常有
用。
MSXML通过XML DOM扩展支持XML-DR和命名空间。
早期I B M的X M L 4 J解析器的尝试版本(E A 2)部分支持1 9 9 9年9月的X M L模式草案。I B M
指出这种支持今后可能在解析器的发行版里出现。鉴于目前XML 模式的变化形式,提供
正在运行的例子确实非常困难,当你读完这本书时会明白这一点。
1. 命名空间
M S X M L里对命名空间的支持是非常强大的。当访问D O M里一个已经被命名空间验证过的
结点时,你能使用b a s e n a m e或者p r e f i x以及命名空间U R I属性去获得与命名空间相关的信息(参
见表7 - 1 2)。
表7 - 1 2
属性含义
b a s e n a m e 返回字符串,它的值是未经验证的结点基本名
p r e f i x 返回字符串,带着命名空间前缀
namespace URI 返回字符串,带着命名空间的U R I,与结点的命名空间前缀一致
这里有两种对于程序员有吸引力的办法处理命名空间。如果你想要使用扩展了的M i c r o s o f t
XML DOM创建一个经命名空间验证过的结点,不能使用c r e a t e E l e m e n t ( )去直接创建。相反,必
须用文档对象的c r e a t e N o d e ( )方法。它用枚举的数值去指明创建的结点类型,验证了的名称以及
相关的U R I:
另外,你能通过使用后续设置了x m l n s属性的c r e a t e E l e m e n t ( )创建一个缺省的命名空间:
但是应注意到,在后面的情况,失去了用命名空间验证其他名称的能力。
上面的J a v a S c r i p t程序行用验证过的名称< p u b : B o o k >在m y s c h e m a s - p u b命名空间里创建了一
个元素。表7 - 1 3中有部分结点类型枚举的列表,它们被M S X M L支持,是对命名空间的兴趣所
在。
228使用XML 高级编程
下载
表7 - 1 3
枚举值
N O D E _ E L E M E N T 1
N O D E _ AT T R I B U T E 2
N O D E _ E N T I T Y _ R E F E R E N C E 5
N O D E _ E N T I T Y 6
N O D E _ N O TAT I O N 1 2
一个结点的a t t r i b u t e集合支持g e t Q u a l i f i e d I t e m ( )方法,允许你根据属性验证过的名字进行搜
索。这种方法接收所需要属性的基本名称和前缀,如果属性被发现则返回一个结点对象。为了
找到一个属性p u b : i s b n,将要进行如下调用:
2. 验证
像任何其他的解析器一样, M S X M L将要验证一个D T D文档。并且如果一个模式由前缀x -
s c h e m a来提供,M S X M L假定接在冒号后面的名称是一个X M L - D R类型的模式并且要试着将它装
入并用它验证文档。
如果你验证了你的XML-DR 模式文档,就有机会获得权利使用模式结点,它在你的文档里
定义了特殊的结点。这些由d e f i n i t i o n属性完成。如果调用了对应于一个元素或属性的结点,你
将得到一个包含可应用的< E l e m e n t Ty p e >或< A t t r i b u t e Ty p e >元素的结点:
7.7.2 数据类型
M S X M L里的数据类型支持对X M L - D R预览是独立的但又是补充。即便你不用模式,也能在
格式正规的X M L里使用强行分类的元素和属性。为了做到这一点,必须在你的文档里声明
M i c r o s o f t数据类型命名空间:
<MyRootElement xmlns:dt="urn:schemas-microsoft-com:datatypes">
一旦做了这些,你能在结点里使用支持的类型。可以预先使用n o d e Va l u e ( )去得到一个元素
或属性的值的地方,能调用n o d e Ty p e d Va l u e ( )去获得强行分类的值。假想你有一些包含元素的
X M L:
你可以用J a v a S c r i p t接下来实现下面的内容:
如果有两个结点< n o d e 1 >和< n o d e 2 >,代表来自两个不同文档的< P a g e C o u n t >元素,你能够
像下面那样得到整个页数:
第7章命名空间和模式使用229 下载
属性n o d e Ty p e S t r i n g返回一个固定字符串,表示数据类型。例如我们的< P a g e C o u n t >,这个
属性应该返回“i n t”。
7.8 图书目录中的变化
目前为止,我希望你能渴望应用命名空间和模式信息到本书目录的实例里。尽管我们不愿
在本书剩下的篇幅里继续这个模式,但我还是打算去演示怎样使用我在这一章里表示过的内容
来改进我们对本书出版信息的理解和组织。
 
中国航空网 www.aero.cn
民航翻译 www.aviation.cn
本文链接地址:XML高级编程上(83)
 
------分隔线----------------------------