`

XML Schema检验XML文档结构

XML 
阅读更多

1. XML Schema简介

 

XML Schema(也称作XML Schema Definition),它用于检验XML文档的结构,是DTD文件的替代者。由于XML Schema本身也是XML结构,因此它易于掌握与扩展。具体的介绍可以参照这里XML Schema教程或者这里XML Schema Primer(英文的)。上面两个文档介绍的非常之详细,我就不多费口舌了。如果不想看教程的朋友也可直接参见本文第二部分,直接上例子,简单明了。

 

2. 常见Schema写法

 

a) 定义简易元素(SimpleType Element),带restriction。如果定义Attribute,而该Attribute有restriction,写法类似。

 

    待检验XML: <sex>male</sex>, 只能填male或female。

 

<xs:element name="sex">
     <xs:simpleType>
         <xs:restriction base="xs:string">
              <xs:enumeration value="male" />
              <xs:enumeration value="female" />
         </xs:restriction>
     </xs:simpleType>
</xs:element>

 

 

b) 定义复杂元素(Complex Element),带attribute。注意:只带attribute的元素也被归为复杂元素。

    待检验XML: <process id="1001">pName</process>, id是int型。

 

<xs:element name="process">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:int" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

 

    在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性。

 

 

 c) 定义复杂元素(Complex Element),带attribute, 并对元素内容进行限制。

     待检验XML: <process id="9999">processName</process>, id是string型且为四位数字。process的text长度最小是5,最长是20。

 

<xs:element name="process">
   <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="processType">
                <xs:attribute name="id">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="[0-9][0-9][0-9][0-9]" />
                         </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

<xs:simpleType name="processType">
    <xs:restriction base="xs:string">
        <xs:minLength value="5"/>
        <xs:maxLength value="20"/>
    </xs:restriction>
</xs:simpleType>
 

 

   这个例子比较复杂,由于该元素带attribute,因此不能再simpleContent下直接使用restriction,只能使用extension标签;而此元素又带有restriction,extension下面没有restriction的功能 。这时,我们可以通过在extension添加自定义的simpleType来满足需求。如上的processType。

 

 

d) 定义复杂元素(Complex Element),带多个element且拥有attribute。

    待检验XML: <person name="michael">

                          <sex>male</sex>

                          <birthplace>Beijing</birthplace>

                      </person>

 

<xs:element name="person">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="sex" />
            <xs:element name="birthplace" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <attribute name="name" type="xs:string">
    </xs:complexType>
<xs:element name="person">

<xs:element name="sex">
    <xs:simpleType>
         <xs:restriction base="xs:string">
              <xs:enumeration value="male" />
              <xs:enumeration value="female" />
         </xs:restriction>
     </xs:simpleType>
</xs:element>
 

 

    此例子中用的sequence这个Order Indicator, 其他的Order Indicator还有choice和all等。

 

    在sex标签上,我们用了ref关键字,它可以引用另一个element,使文档模块化,有助于阅读。

 

    对于所有的 "Order" 和 "Group" 指示器(any、all、choice、sequence、group name 以及 group reference),其中的 maxOccurs 以及 minOccurs 的默认值均为 1。因此,当想让一个element变为可选,我们可以将<minOccurs> 设置为 0 ,或者你希望的数字。

 

    如果这个元素既有子元素又有属性的话,属性跟在Order Indicator后。

 

 

 

Hope it can relax your eyes : )

  • 大小: 43.4 KB
0
0
分享到:
评论

相关推荐

    XML的schema部分代码

    但根据标题和标签,我们可以推断这个压缩包可能包含了用于定义XML文档结构的XML Schema文件。为了深入了解其中的具体内容,你需要打开这些文件查看其具体的元素、属性和规则定义。如果你需要进一步的帮助,例如解析...

    XML校验工具,可以用来进行XML合法性检验

    - **XSD(XML Schema Definition)校验**:通过XSD文件来校验XML文档的结构和内容是否符合预期。 - **Relax NG校验**:使用Relax NG语法来校验XML文档的结构。 - **Schematron校验**:通过Schematron规则来校验XML...

    schema校验问题

    1. **检查XML文档**:确保文档结构符合XSD定义,所有元素、属性和值都正确。 2. **检查XSD文件**:确认模式文件没有语法错误,所有定义都清晰且完整。 3. **验证工具使用**:使用XML验证工具检查文档和模式的一致性...

    xmlspy

    这款软件深受开发者喜爱,因其直观的界面和丰富的功能,使得XML文档的创建、编辑、验证和调试变得简单易行。 在XMLSpy中,你可以: 1. **XML编辑**:XMLSpy提供了所见即所得的编辑模式,以及源代码视图,让你可以...

    xml基础教程(ppt)

    2. XML文档结构:一个XML文档必须包含文档声明(如`&lt;?xml version="1.0" encoding="UTF-8"?&gt;`),它指定了文档的版本和编码。接着是元素,元素是XML文档的基本构建块,用来描述数据(例如`&lt;book&gt;`)。元素可以包含...

    计算机科学与技术专业XML课程教学大纲

    课程分为XML技术和基于XML的服务两大部分,涵盖了XML的基础知识、语法、文档类型定义(DTD)、XML Schema、XSL转换、XML文档对象模型(DOM)和SAX解析等核心内容。 在教学过程中,课程强调理论与实践的结合,通过...

    利用xsd校验xml

    在描述中提到的博文链接,虽然没有提供具体内容,通常博主可能会详细介绍如何创建一个XSD文件,如何定义XML文档的结构,并展示如何使用这个XSD文件来校验XML文档。这可能包括使用编程语言(如Java、C#)中的库函数,...

    xml基础教程(xml入门绝佳实例)

    XML,全称Extensible Markup Language,是一种用于标记数据的语言,被广泛应用于数据交换、配置...记得实践是检验真理的唯一标准,尝试编写XML文档,用Schema验证,使用DOM解析和XSLT转换,你将对XML有更深入的理解。

    关于xml期末6套试卷

    DTD和XML Schema是用来定义XML文档结构的规范。DTD是XML的早期验证方式,而XML Schema提供了更强大的数据类型和约束能力。 7. XSLT(Extensible Stylesheet Language Transformations): XSLT用于转换XML文档,...

    21天学会XML

    3. DTD(Document Type Definition)和XML Schema:学习如何使用DTD或XML Schema来定义XML文档的结构和数据类型,以确保文档的有效性和一致性。 4. 处理指令(Processing Instructions, PI):了解处理指令的用途,...

    xml用书的教程例子全面的例子

    例子1至例子7逐步介绍了如何使用DTD或XML Schema定义文档结构,以及如何验证XML文件是否符合这些定义。这些实例将涵盖各种复杂的元素和属性定义,以提升读者的实战能力。 习题三: 这部分的练习将引导读者创建自己...

    xml基础教程课件习题答案源代码

    4. **XML Schema与DTD**:XML Schema和Document Type Definition (DTD) 是两种用于定义XML文档结构和数据类型的规范。XML Schema使用XML语法,功能更强大,而DTD则更为简单,两者都可以验证XML文档是否符合预设的...

    xml基础教程|源码

    - DTD或XML Schema用于定义XML文档的结构和数据类型,确保文档的合法性。 5. 解析XML: - DOM(Document Object Model)将整个XML文档加载到内存,形成一个树形结构,便于遍历和操作。 - SAX(Simple API for ...

    XML基础教程实例代码

    - XML Schema是一种用于定义XML文档结构和数据类型的语言,类似于HTML的DTD(Document Type Definition)。 - 它允许我们定义元素、属性、数据类型以及它们之间的关系。 7. **XML解析器** - 解析器读取XML文档并...

    XML试题,大约有300多题,包含填空、问答、选择、判断

    2. **XML文档结构**:试题可能会考察XML文档的组成部分,如文档声明(`&lt;?xml ...?&gt;`),命名空间(namespace)的使用,以及DOCTYPE声明(用于定义文档类型)。 3. **XML元素和属性**:XML元素是XML文档的基本构建块...

    计算机科学与技术专业XML课程教学大纲文.pdf

    复习思考题则进一步巩固了各章节的关键知识点,例如XML标记描述文档结构而非格式、DTD和XML Schema的声明与应用、XSLT转换过程等,这些题目有助于检验学生对XML技术的掌握程度。 总的来说,XML课程是计算机科学与...

    XML SDK的创建与使用

    2. **XML Schema**:为了确保XML文档的结构一致性,我们通常会使用XML Schema(XSD)来定义文档结构。XSD定义了元素、属性、数据类型等规则,用于验证XML文档是否符合规范。 3. **XML解析器**:解析器是处理XML文档...

    XML网页制作实作教程及实例

    二、XML文档结构 一个基本的XML文档包括: 1. 文档声明:`&lt;?xml version="1.0" encoding="UTF-8"?&gt;`,指定XML版本和编码。 2. 根元素:XML文档的顶级元素,所有其他元素都包含在其内。 3. 元素:用尖括号包围,如 `...

    XML课程教学计划参考样本.doc

    2. 掌握XML的验证机制,如DTD和XSD,能为XML文档定义结构和约束。 3. 学习XPath语言,能够定位和提取XML文档中的特定数据。 4. 学习XSLT,实现XML数据的转换和呈现。 5. 了解XML在网络通信和Web服务中的作用,理解...

    XML认证考试题库

    - **XML Schema**:用于定义XML文档的结构和数据类型,类似DTD(Document Type Definition)。 4. **XML与XSLT** - **XSLT(Extensible Stylesheet Language Transformations)**:用于转换XML文档,实现格式化和...

Global site tag (gtag.js) - Google Analytics