`

Schema的一个简单实例

阅读更多
一个XML文件如下:
<?xml version = "1.0" encoding="GB2312" standalone = "no"?>
<!DOCTYPE 联系人列表  SYSTEM "fclml.dtd">

<联系人列表 公司=“大地公司”>
    
<联系人>
        
<姓名>张三</姓名>
        
<ID>001</ID>
        
<公司>A公司</公司>
        
<EMAIL>zhang@aaa.com</EMAIL>
        
<电话>(010)62345678</电话>
        
<地址>
            
<街道>五街1234号</街道>
            
<城市>北京市</城市>
            
<省份>北京</省份>
            
<ZIP>100001</ZIP>
        
</地址>
    
</联系人>

    
<联系人>
        
<姓名>李四</姓名>
        
<ID>002</ID>
        
<公司>B公司</公司>
        
<EMAIL>li@bbb.org</EMAIL>
        
<电话>(021)87654321</电话>
        
<地址>
            
<街道>南京路9876号</街道>
            
<城市>上海</城市>
            
<省份>上海</省份>
            
<ZIP>200002</ZIP>
        
</地址>
    
</联系人>
</联系人列表>

它的DTD文件fclml.dtd如下:
<?xml version="1.0" encoding="GB2312"?>

<!ELEMENT 联系人列表 (联系人)*>
<!ELEMENT 联系人 (姓名,ID,公司,EMAIL,电话,地址)>
<!ELEMENT 地址 (街道,城市,省份)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 公司 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT 电话 (#PCDATA)>
<!ELEMENT 街道 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>
<!ATTLIST 联系人列表 
    公司 CDATA #REQUIRED
>

同样的文档结构要用Schema来描述的话,可写做下面的样子。我们给这个文件取名fclmlschema.xml。也许你要问:"为什么以.xml作为扩展名,而不象DTD那样有个特殊的名字?"答案很明确,因为Schema本身就是XML文档实例,以.xml作为扩展名正是为了强调这一点。不过,这并不是说,就只能以.xml作为扩展名。如果你愿意,你完全可以给它取一个全新的名字,比如:.aaa、.schema、...,只要你的文件系统支持就行。

[1]<?xml version="1.0" encoding="GB2312" ?>
[2]
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
               xmlns:dt
="urn:schemas-microsoft-com:datatypes">
[3]    
<AttributeType name="公司"/>
[4]    
<ElementType name= "姓名"/>
[5]    
<ElementType name= "ID"/>
[6]    
<ElementType name= "公司"/> 
[7]    
<ElementType name= "EMAIL"/>
[8]    
<ElementType name= "电话" dt:type="fixed.14.4"/>
[9]    
<ElementType name= "街道"/> 
[10]  
<ElementType name= "城市"/>
[11]  
<ElementType name= "省份"/>
[12]  
<ElementType name= "地址" content="eltOnly"> 
[13]       
<element type= "街道" /> 
[14]       
<element type= "省份" /> 
[15]       
<element type= "城市" />
[16]  
</ElementType>
[17]  
<ElementType name= "联系人" content="eltOnly">
[18]       
<element type= "姓名" />
[19]       
<element type= "ID" />
[20]       
<element type= "公司" />
[21]       
<element type= "EMAIL" />
[22]       
<element type= "电话" />
[23]       
<element type= "地址" />
[24]  
</ElementType>
[25]  
<ElementType name= "联系人列表" content="eltOnly">
[26]       
<element type= "联系人" />
[27]       
<attribute type="公司"/>
[28]  
</ElementType>
[29]
</Schema>

逐字逐句地分析一下这个fclmlschema.xml: 
 
        [1]是XML类型声明语句,指明该文档是一个XML文档,并且符合版本1.0规范。另外,该文档采用GB2312编码。
        [2]是Schema声明语句,它包含了Schema命名空间的声明。本例中用到了两个命名空间:一是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文档是一个XML Schema文档;另一个是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定义了在本文档中可用的数据类型URI
        [3]是属性定义语句,它定义了属性“公司”。
        [4]-[11]是元素定义语句,这里共定义了8个元素:姓名、ID、公司、EMAIL、电话、街道、城市、省份。其中为"电话"元素定义了数据类型:fixed.14.4。
       [12]-[16]定义了本Schema的二级元素:地址,指明该元素包含三个子元素:街道、城市、省份。
[17]-[24]定义了本Schema的三级元素:联系人,它指明该元素包含六个子元素:姓名、ID、公司、EMAIL、电话、地址。
[25]-[28]定义了本Schema的顶级元素:联系人列表,指明该元素包含一个子元素:联系人,以及一个属性:公司。
[29]是结束标记语句,它指明该Schema的描述到此为止。
分享到:
评论

相关推荐

    一个简单的schema讲解小例子(源码)

    本示例提供了一个简单的Schema讲解,通过源码分析,我们可以深入理解Schema的实际应用和重要性。 首先,让我们来了解一下Schema的基本概念。在数据库领域,Schema是数据库的逻辑结构,包括表格、列、索引等元素的...

    一个简单的XML Schema的例子

    在这个例子中,`名称`和`作者`元素都指定了字符串类型(`xs:string`),这是一个简单类型。 XML Schema中的复杂类型允许包含元素和属性,可以嵌套其他元素,或者与其他元素的属性关联,提供了更丰富的结构描述能力...

    XML基础实例 Schema

    8. **第二章 Schema**:这个文件名可能指的是学习XML Schema的一个章节,该章节可能详细讲解了Schema的某一部分,如数据类型的扩展、限制、枚举值、模式匹配等。 总之,XML基础实例和Schema是XML编程中的核心概念。...

    SCHEMA 官方文档 官方例子

    它是基于XML的,主要用于创建XML Schema Definition (XSD) 文件,这些文件为XML文档提供了一个规范化的框架,确保数据的一致性和准确性。在本文中,我们将深入探讨SCHEMA的相关知识点,包括其基本概念、作用以及如何...

    XMLSchema经典例题

    6. **模式和模式组合**:XML Schema支持模式(schema)的组合,可以将多个小的模式组合成一个大的模式,便于管理和重用。例如,你可以创建一个通用的`contactInfo`模式,然后在其他多个模式中引用它。 7. **重复组*...

    Python-schema一个用于对Python数据结构进行验证的库

    使用schema,你可以定义一个与表单字段对应的模式,然后简单地应用这个模式来验证整个表单数据,避免了繁琐的手动检查。 例如,如果你有一个注册表单,可能需要验证用户名、密码和电子邮件地址: ```python form_...

    XForms用schema(xsd)验证的一个简单的例子

    例如,假设`schema.xsd`中有一个名为`person`的元素,它期望包含一个`firstName`和`lastName`属性,且这些属性的数据类型为字符串。在`sample.xhtml`中,我们可以创建相应的输入字段,并通过`&lt;xforms:bind&gt;`元素将...

    最简单的schema文档.doc

    在创建最简单的XML Schema文档时,我们通常会从定义一个根元素开始,这个根元素将对应于XML实例文档中的根元素。例如,考虑下面的XML实例文档`hello.xml`: ```xml &lt;greeting&gt;Hello World!! ``` 对于这样一个简单...

    JSON Schema 校验库——json-schema-validator(java版本).rar

    然后,可以创建一个`JsonSchemaFactory`实例,加载JSON Schema文件,接着使用`validate()`方法来检验JSON数据。例如: ```java import com.github.fge.jsonschema.core.exceptions.ProcessingException; import ...

    xml schema实例

    在这个实例中,`person`元素有一个名为`id`的属性,类型为`xs:ID`,这是XML Schema的一个预定义类型,常用于唯一标识。 总结来说,XML Schema实例通过使用简单类型、复合类型、元素定义和属性定义,为XML文档提供了...

    JSON-Schema定义规范

    JSON Schema本质上也是一个JSON文档,它定义了一个JSON实例应该遵循的模式。一个基本的JSON Schema包含以下关键元素: - **Type**:定义了数据的基本类型(例如,object、array、string等)。 - **Properties**:...

    XML Schema教程

    - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网联盟 (W3C) 的官方标准,这标志着 XML Schema 成为了 Web 开发中的一个重要组成部分。 #### 五、学习 XML Schema 的前提条件 - **HTML/XHTML**:...

    (网页)Schema 教程

    例如,一个简单的文章Schema示例: ```html &lt;div itemscope itemtype="http://schema.org/Article"&gt; 文章标题 文章简介 &lt;span itemprop="author" itemscope itemtype="http://schema.org/Person"&gt; 作者名 ...

    XML - 实验(2) -- Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    XMLschema快速入門

    ### XML Schema 快速...通过以上步骤,读者可以了解到如何使用 XML Schema 来定义 XML 数据结构,并通过一个简单的实例学习如何实现 XML 分层的效果。希望这个指南能够帮助初学者更好地理解和应用 XML Schema 技术。

    XML、DTD、Schema

    例如,一个简单的DTD声明可能如下: ```xml &lt;!DOCTYPE book [ &lt;!ELEMENT book (title, author+, publisher)&gt; &lt;!ELEMENT title (#PCDATA)&gt; &lt;!ELEMENT author (#PCDATA)&gt; &lt;!ELEMENT publisher (#PCDATA)&gt; ]&gt; ``` ...

    apache xmlschema api文档

    2. **XMLSchema**:这个类代表一个XML Schema定义。它可以用于验证XML文档,获取Schema中的元素、属性和其他组件的信息。 3. **XSModelGroup**:表示XML Schema中的模式组,用于组合其他模式元素,如选择(`...

    XML Schema

    - **编写第一个Schema**: - **基本语法**:使用`&lt;xs:schema&gt;`元素作为根元素开始编写Schema文档。 - **定义元素**:通过`&lt;xs:element&gt;`元素定义文档中的元素。 - **定义属性**:使用`&lt;xs:attribute&gt;`元素定义...

    前端开源库-js-schema

    `js-schema` 是一个专门用于JavaScript对象验证的开源库,它为开发者提供了简单且直观的API,使得在前端进行数据校验变得更加便捷。本文将深入探讨`js-schema`的核心功能、使用方法以及其在实际开发中的应用场景。 ...

    关于Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

Global site tag (gtag.js) - Google Analytics