信息化 频道

XML Schema与XML DTD的技术比较与分析

    命名空间 

    在XML中引入命名空间的目的是为了能够在一个XML文档中使用其它XML文档中的一些具有通用性的定义(通常是一些元素或数据类型等的定义),并保证不产生语义上的冲突。XML DTD并不能支持这一特性,这进一步限制了XML DTD的适用范围。而XML Schema则很好的满足了这一点。

    并且, XML Schema还提供了include 和 import两种引用命名空间的方法。下面的例子中XML Schema文档引用了其它两个XML Schema的定义,通过使用import实现了混合使用不同命名空间的目的。例子中还定义了不同命名空间中元素之间的keyref约束。

    源码8 XML Schema对命名空间的使用 

    schema targetNamespace="http://202.117.84.144"
    xmlns:xs="http://202.117.84.144"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:a="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"
    xmlns:b="http://202.117.84.228/middlewareOracle805ioracletest20211784144" 
    elementFormDefault="qualified">
    <import namespace="http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228" 
    schemaLocation="F:\xml schema\middlewareSqlServer2000sqlservertest20211784228.xsd"/>
    <import namespace="http://202.117.84.228/middlewareOracle805ioracletest20211784144"
    schemaLocation="F:\xml schema\middlewareOrcal805ioracletest20211784144.xsd"/>
    <annotation>
    <documentation xml:lang="cn">
    schema for Middleware
    Copyright 2001 Zhou Jingtao. All rights reserved.
    </documentation>
    </annotation>
    <element name="CombineDatabase">
    <complexType>
    <sequence>
    <element name="CombinGlobeSchema">
    <complexType>
    <sequence>
    <element ref="a:H-Database"/>
    <element ref="b:H-Database"/>
    </sequence>
    </complexType>
    <keyref name="SqlServerTest_T_C_Psign" refer="b:gz_jgxx_ID_pk">
    <selector xpath="a:H-Database/a:SqlServerTest/a:T_C/a:Count"/>
    <field xpath="@value"/>
    </keyref>
    </element>
    </sequence>
    </complexType>
    </element>
    </schema>

 

0
相关文章