English 中文(简体)
XSD - 快速指南
  • 时间:2024-11-05

XSD - Quick Guide


Previous Page Next Page  

XSD - Overview

XML Schema的定义,通常称为XSD,是准确描述XML语言的一种方法。 XSD对照适当的XML语言的文法规则,检查XML文件的结构和词汇。

XML文件可定义为:

    如果XML文件遵守所有XML一般规则,例如标签,必须适当加以封顶,必须平衡打开和关闭标签,空壳必须用....../>结束;然后称作well-form

    一份XML文件称,它不仅在well-form上有效,而且符合现有的XSD,其中规定它使用哪些标签,这些标签可以包含哪些特性,哪些标签可以在其他财产中发生。

以下图表显示XSD如何用于编制XML文件。

XSD Technology

这里是一部简单的XSD法典。 审视这个问题。

<?xml version = "1.0"?>

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   targetNamespace = "http://www.tutorialspoint.com" 
   xmlns = "http://www.tutorialspoint.com"
   elementFormDefault = "quapfied">

   <xs:element name =  class >
      <xs:complexType>
         <xs:sequence>
            <xs:element name =  student  type =  StudentType  minOccurs =  0  
               maxOccurs =  unbounded  />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name =  rollno  type =  xs:positiveInteger />
   </xs:complexType>
   
</xs:schema>

Features

这份清单列出了科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、技术、科学、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、技术、科学、技术、技术、科学、技术、科学、技术、技术、科学、技术、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、技术、技术、科学、技术、技术、科学、技术、技术、科学、技术、科学、技术、技术、科学、科学、科学、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、

    XSDs can be extensible for future additions.

    XSD is richer and more powerful than DTD.

    XSD is written in XML.

    XSD supports data types.

    XSD supports namespaces.

    XSD is W3C recommendation.

XSD Syntax

XML XSD保存在一份单独的文件中,然后可与XML文件链接使用。

Syntax

可持续发展学会的基本宗旨如下:

<?xml version = "1.0"?>

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   targetNamespace = "http://www.tutorialspoint.com"
   xmlns = "http://www.tutorialspoint.com" elementFormDefault = "quapfied">
   
   <xs:element name =  class >
      <xs:complexType>
         <xs:sequence>
            <xs:element name =  student  type =  StudentType  minOccurs =  0  
               maxOccurs =  unbounded  />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name =  rollno  type =  xs:positiveInteger />
   </xs:complexType>
   
</xs:schema>

<Schema> Element

Schema是科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、科学、技术、科学、科学、科学、科学、科学、科学、科学、技术、科学、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、科学、技术、技术、技术、科学、技术、科学、技术、技术、科学、技术、科学、技术、技术、技术、技术、科学、技术、科学、技术、技术、技术、技术、技术、技术、技术、科学、技术、科学、科学、科学、技术、科学、科学、技术、技术、科学、技术、技术、技术、技术、科学、技术、技术、科学、技术、技术、技术、科学、科学、技术、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、科学、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术、技术

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">

上述碎块具体规定,在以下网址中界定了化chem中使用的元素和数据类型: targetNamespace = "http://www.tutorialspoint.com"

上述碎块具体规定,该表中使用的要素在上界定。 名称空间。 这是任择的。

xmlns = "http://www.tutorialspoint.com"

上述碎块具体规定,缺省名称空间为 elementFormDefault = "quapfied"

上述碎块表明,在任何XML文件中使用这些元素之前,该图章中宣布的任何内容都必须具备名称空间的资格。 这是任择的。

Referencing Schema

审视以下的Schema:

<?xml version = "1.0"?>

<class xmlns = "http://www.tutorialspoint.com"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.tutorialspoint.com student.xsd">  
   
   <student rollno = "393">    
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>
   </student>
   
   <student rollno = "493">	 
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   
   <student rollno = "593">    
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>
xmlns = "http://www.tutorialspoint.com"

上述碎片具体指明了默认名称空间声明。 扫描仪验证仪使用这一名称空间,检查所有要素都是这一名称空间的一部分。 这是任择的。

xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.tutorialspoint.com student.xsd">  

在界定XMLSchema-instance xsi之后,使用schemaLocation属性。 这一特性有两个价值,即XML Schema的名称和位置,用一个空间加以分离。 这是任择的。

XSD - Vapdation

我们使用设在 Java的XSD有效器验证students.xml。 页: 1

students.xml

<?xml version = "1.0"?>

<class>  
   <student rollno = "393">
      <firstname>Dinkar</firstname>    
      <lastname>Kad</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>	 
   </student>
   
   <student rollno = "493">	 
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>Vinni</nickname>
      <marks>95</marks>
   </student>
   
   <student rollno = "593">    
      <firstname>Jasvir</firstname>
      <lastname>Singh</lastname>
      <nickname>Jazz</nickname>
      <marks>90</marks>
   </student>
</class>

students.xsd

<?xml version = "1.0"?>

<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name =  class >
      <xs:complexType>
         <xs:sequence>
             <xs:element name =  student  type =  StudentType  minOccurs =  0  
                maxOccurs =  unbounded  />
         </xs:sequence>
      </xs:complexType>
   </xs:element>

   <xs:complexType name = "StudentType">
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
      <xs:attribute name =  rollno  type =  xs:positiveInteger />
   </xs:complexType>			 
</xs:schema>

XSDVapdator.java

import java.io.File;
import java.io.IOException;

import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;

import javax.xml.vapdation.Schema;
import javax.xml.vapdation.SchemaFactory;
import javax.xml.vapdation.Vapdator;

import org.xml.sax.SAXException;

pubpc class XSDVapdator {
   pubpc static void main(String[] args) {
      if(args.length !=2){
         System.out.println("Usage : XSDVapdator <file-name.xsd> <file-name.xml>" );
      } else {
         boolean isVapd = vapdateXMLSchema(args[0],args[1]);
         
         if(isVapd){
            System.out.println(args[1] + " is vapd against " + args[0]);
         } else {
            System.out.println(args[1] + " is not vapd against " + args[0]);
         }
      }
   }
   
   pubpc static boolean vapdateXMLSchema(String xsdPath, String xmlPath){
      try {
         SchemaFactory factory =
            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            Schema schema = factory.newSchema(new File(xsdPath));
            Vapdator vapdator = schema.newVapdator();
            vapdator.vapdate(new StreamSource(new File(xmlPath)));
      } catch (IOException e){
         System.out.println("Exception: "+e.getMessage());
         return false;
      } catch(SAXException e1){
         System.out.println("SAX Exception: "+e1.getMessage());
         return false;
      }
		
      return true;
   }
}

Steps to vapdate XML against XSD

    页: 1 纽约总部 > java

    页: 1 www.un.org/Depts/DGACM/index_spanish.htm

    页: 1 www.un.org/Depts/DGACM/index_spanish.htm

    Compile XSDVapdator.java using console. 保证在你的机器上安装了1.5千卡,并配置了教室。 关于如何使用JAVA的详细信息,见JAVATtorial

E:javajavac XSDVapdator.java

    参见XSDVapdator,students.xsdstudents.xml。 作为论据通过。

E:javajava XSDVapdator students.xsd students.xml

Verify the output

页: 1

students.xml is vapd against students.xsd

XSD - Simple Types

在本章中,我们看到科学、技术和创新司界定的简单类型。

S.No. Simple Type & Description
1

简单内容只能包含案文。 它不能包含任何其他内容。

2

酸盐本身是一种类型,用于复杂元素。

3

/xsd/xsd_restriction.htm>Restriction

限制界定了XML要素的可接受价值。

XSD - Complex Types

复杂的要素是可包含其他内容和(或)属性的XML要素。 我们可以以两种方式形成一个复杂的要素:

    界定一种复杂的类型,然后使用 类型设定一个要素。 属性

    直接通过点名确定复杂类型

Define a Complex Type and then create an element using type attribute.

<xs:complexType name = "StudentType">
   <xs:sequence>
      <xs:element name = "firstname" type = "xs:string"/>
      <xs:element name = "lastname" type = "xs:string"/>
      <xs:element name = "nickname" type = "xs:string"/>
      <xs:element name = "marks" type = "xs:positiveInteger"/>
   </xs:sequence>
   <xs:attribute name =  rollno  type =  xs:positiveInteger />
</xs:complexType>

<xs:element name =  student  type =  StudentType  />			 

Define a Complex Type directly by naming.

<xs:element name = "student">
   <xs:complexType>   
      <xs:sequence>
         <xs:element name = "firstname" type = "xs:string"/>
         <xs:element name = "lastname" type = "xs:string"/>
         <xs:element name = "nickname" type = "xs:string"/>
         <xs:element name = "marks" type = "xs:positiveInteger"/>
      </xs:sequence>
   <xs:attribute name =  rollno  type =  xs:positiveInteger />
   </xs:complexType>
<xs:element>

以下是科学、技术和革新司支持的复杂类型清单。

S.No. Simple Type & Description
1

就业:

复杂的就业类型要素只能具有属性,但无内容。

2

内容复杂,只能包含要素

3

Text only

文本内容复杂,只能包含属性和案文。

4

混合复合型元素可以包含元素、特性和文字。

5

Indicators

指标控制了如何在XML文件中组织要素。

6

<any>

&; any; 元素被用于没有用chem法界定的要素

7

<anyAttribute>

The <anyAttribute> accreditatione is used for Depende which are not defined by schema.

XSD - String

严格的数据类型用于代表XML文件中的特性。

<xs:string> data type

带;xs:string> 数据类型可以具有特性、线性馈赠、运输回报和制表特征。 XML处理器不会用空间取代线料、运输回报和装饰的表象,并保持其不变。 例如,在展示时保留多个空间或表格。

<xs:string> Example

xsd -

<xs:element name = "name" type = "xs:string"/>

锡尔的元素使用——

<name>Dinkar</name>
<name>Dinkar    Kad</name>

<xs:token> data type

带;xs:token> 数据类型来源于“带”;string> 数据类型,可以具有特性、线性饲料、运输回报和制表特征。 XML处理器将拆除线料、表格、运输回报、铅和拖车空间以及多个空间。

<xs:token> Example

xsd -

<xs:element name = "name" type = "xs:token"/>

锡尔的元素使用——

<name>Dinkar</name>
<name>Dinkar    Kad</name>

String Data Types

下面是数据类型中来自“带”的常用数据类型清单。

S.No. Name & Description
1

代表XML的ID属性,用于化学特性。

2

在XML中代表IDREF属性,用于化学特性。

3

代表有效语言

4

代表有效的XML名称

5

在XML中代表一种NMTOKEN属性,用于化学特性。

6

是指不含线性饲料、运输回报或制表的载体。

7

是指能够含有线性馈料、运输回报或制表的载体。

8

a. 舱载体不含线料、运输收益、制表、主要或拖车空间或多处空间

Restrictions

可用严格的数据类型来实施限制类型:

    enumeration

    length

    maxLength

    minLength

    pattern

    whiteSpace

XSD - Date Time

所用日期和时间数据类型是XML文件的日期和时间。

<xs:date> data type

The <xs:date> data category is used to representdate in YYYY-MM-DD form.

    - 代表年

    - 每月

    - 代表日

<xs:date> Example

XSD——

<xs:element name = "birthdate" type = "xs:date"/>

XML的主要用途——

<birthdate>1980-03-23</birthdate>

<xs:time> data type

The <xs:time> data category is used to represent time in hh:mm:s格式。

    h

    - 代表

    - 代表第二位

<xs:time> Example

XSD——

<xs:element name = "startTime" type = "xs:time"/>

XML的主要用途——

<startTime>10:20:15</startTime>

<xs:datetime> data type

The <xs:datetime> data category is used to representdate and time in YYYYY-MM-DD-Thh:mm:s Format.

    - 代表年

    - 每月

    - 代表日

    - 代表时间段的开始

    h

    - 代表

    - 代表第二位

<xs:datetime> Example

XSD——

<xs:element name = "startTime" type = "xs:datetime"/>

XML的主要用途——

<startTime>1980-03-23T10:20:15</startTime>

<xs:duration> data type

The <xs:duration> data category is used to represent time interval in PnYnMnDTnHnMnS Format. 除P外,每个构成部分都是任择的。

    - 代表起职科

    年限

    - 每月

    - 代表日

    - 代表时间段的开始

    - 代表时间

    - 代表

    - 代表第二位

<xs:duration> Example

XSD——

<xs:element name = "period" type = "xs:duration"/>

×ml的元素使用时间为6年、3个月、10天和15小时。

<period>P6Y3M10DT15H</period>

Date Data Types

以下是通用数据类型清单。

S.No. Name & Description
1.

日值

2.

代表日期和时间价值

3.

代表间隔时间

4.

部分时间为当天(DD)

5.

代表一个月(MM)的部分日期

6.

a 部分时间为月和日(MM-DD)

7.

代表年薪部分

8.

代表年月部分

9.

代表时间价值

Restrictions

随类型限制可使用数据类型——

    enumeration

    maxExclusive

    maxInclusive

    minExclusive

    minInclusive

    pattern

    whiteSpace

XSD - Numeric Data Types

核心数据类型用于在XML文件中代表数字。

<xs:decimal> data type

The <xs:decimal> data category is used to represent numeric Value. 它支持最多达18位数的男女人数。

<xs:decimal> Example

XSD——

<xs:element name = "score" type = "xs:decimal"/>

XML的主要用途——

<score>9.12</score>

<xs:integer> data type

The <xs:integer> data category is used to represent integer Value.

<xs:integer> Example

XSD——

<xs:element name = "score" type = "xs:integer"/>

XML的主要用途——

<score>9</score>

Numeric Data Types

以下是通用数字数据类型清单。

S.No. Name & Description
1.

<byte>

A signed 8bit integer

2.

>

折旧价值

3.

签字的32个轨道分类账

4.

分类价值

5.

A signed 64bit integer

6.

仅具有负值的分类账(-2,-1)

7.

仅具有非负面价值(0,1,2,1)的ger。

8.

仅具有非正直价值(2,2,-1,0)的 in

9.

仅具有积极价值(1,2,0)的愤怒。

10.

<<short

A signed 16bit integer

11.

未签名的64比特人

12.

纽约总部 Int

未签名的32名借方 in

13.

纽约总部 短期

未签名的16位轨道分类账

14.

unsignByte

未签名的8位借方位

Restrictions

随类型限制可使用数据类型——

    enumeration

    fractionDigits

    maxExclusive

    maxInclusive

    minExclusive

    minInclusive

    pattern

    totalDigits

    whiteSpace

XSD - Miscellaneous Data Types

统计司还有其他几个重要数据类型,例如Boolean, binary,anyURI.

<xs:boolean> data type

&;xs:boolean> 数据类型被用于真实、虚假、1(真实)或0(虚假)价值。

<xs:boolean> Example

XSD——

<xs:element name = "pass" type = "xs:boolean"/>

XML的主要用途——

<pass>false</pass>

Binary data types

原始数据类型用于代表双币值。 两种双向类型在使用中是常见的。

    - 系编码的双元数据基64

    <hexBinary >——表示编码的六dec英元数据

<xs:hexbinary> Example

XSD——

<xs:element name = "blob" type = "xs:hexBinary"/>

XML的主要用途——

<blob>9FEEF</blob>

<xs:anyURI> data type

The <xs:anyURI> data category is used to represent URI.

<xs:anyURI> Example

XSD——

<xs:attribute name = "resource" type = "xs:anyURI"/>

XML的主要用途——

<image resource = "http://www.tutorialspoint.com/images/smiley.jpg" />

Numeric Data Types

以下是通用数字数据类型清单。

S.No. Name & Description
1.

<byte>

A signed 8bit integer

2.

>

折旧价值

3.

签字的32个轨道分类账

4.

分类价值

5.

A signed 64bit integer

6.

仅具有负值的分类账(-2,-1)

7.

仅具有非负面价值(0,1,2,1)的ger。

8.

仅具有非正直价值(2,2,-1,0)的 in

9.

仅具有积极价值(1,2,0)的愤怒。

10.

<<short

A signed 16bit integer

11.

未签名的64比特人

12.

纽约总部 Int

未签名的32名借方 in

13.

纽约总部 短期

未签名的16位轨道分类账

14.

unsignByte

未签名的8位借方位

Restrictions

除生物数据类型外,还可使用杂项数据类型(以下简称表)。

    enumeration

    length

    maxLength

    minLength

    pattern

    whiteSpace

Advertisements