zoukankan      html  css  js  c++  java
  • XML Schema and XMLspy notes

    Introduction

    An xml documents consists of elements, attributes and text.

    There are two structures in an xml document:

    simple ( contains only text ) can ba either Built-in, or Derived

    complex ( has attributes or child elements, and possibly texts as well)

    Restriction on values:

    <xs:element name="age">

        <xs:simpleType>

        <xs:restriction base="xs:integer">

             <xs:minInclusive value="0"/>

             <xs:maxInclusive value="120"/>

        </xs:restriction>    </xs:simpleType>

    </xs:element>

    To limited the content of an XML element to a set of acceptable values, we can use the enumeration constraint:

    <xs:element name="car" type="carType"/>

    <xs:simpleType name="carType">

        <xs:restriction base="xs:string">

        <xs:enumeration value="Audi"/>

        <xs:enumeration value="Golf"/>

        <xs:enumeration value="BMW"/>

        </xs:restriction>

    </xs:simpleType>

    Restrictions on a Series of Values

    <xs:element name="initials">

        <xs:simpleType>

        <xs:restriction base="xs:string">

            <xs:pattern value="[A-Z][A-Z][A-Z]"/>

            <xs:pattern value="[a-zA-Z0-9]{8}"/>

            <xs:length value="8"/>

        </xs:restriction>

        </xs:simpleType>

    </xs:element>

    xs:schema is the root element of the XSD document

    <xs: schame 

    xmlns:xs="http://www.w3.org/2001/XMLSchema //must have the namespace declaration (Schema for schemas i.e. "http://www.w3.org/2001/XMLSchema")

    version="1.1">

    ...

    ...

    </xs:schema>  under xs:schema (global:can be referenced)/further down the schema hierarchy (local)

                                                     global elements also can be substituted by another element!

    xs:schema cam contain the following child elements:

    • xs:include
    • xs:import
    • xs:override     new to XML Schema 1.1
    • xs:element
    • xs:attribute
    • xs:group    enables you to specidy constraints on a specific set of sub-elements
    • xs:attributeGroup
    • xs:annotation     can contain two child elements: xs:appinfo/xs:documentation
    • xs:defaultOpenContent     new to XML Schema 1.1
    • xs:simpleType or
    • xs:complexType   re-use previous definitions (base="complexTypeName", type="complexTypeName")

    i.e.

    <?xml version="1.0" encoding="UTF-8"?>

    <!-- edited with XMLSpy v2014(x64) (http://www.altova.com) by Christian Luntzer (Altova GmbH) -->

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

     <xs:element name="city" type="xs:string" default="MainStreet"/

          //global element name is mandatory, type is optional

    <xs:element name="shoesize">  //Complex Element type1:  simple contents   

        <xs:complexType>  //Only contains simple contents: text, attributes

            <xs:simpleContent>

            <xs:extension base="xs:integer">

            <xs:attribute name="country" type="xs:string" />

            </xs:extension>

            </xs:simpleContent>

        </xs:complexType>

    </xs:element>

     <xs:element name="address">

      <xs:complexType>      //Complex element Type2: mixed contents

       <xs:annotation>

          <xs:documentation>type which contains driver....

          </xs:documentation>

       </xs:annotation>

       <xs:sequence mixed="ture">    //contains mixed contents

        <xs:element name="street" type="xs:string"/>    //local element declaration "street", mandatory 

        <xs:element ref="city"/>//local element reference"city", name and type attribute cannot be present   </xs:sequence>

      </xs:complexType>

     </xs:element>

    <xs:element name="product">  //Complex element Type3: only attribute content 

        <xs:complexType>

            <xs:complexContent>

           <xs:restriction base="xs:integer“>

           <xs:attribute name="prodid" type="xs:positiveInteger"/>

           </xs:restriction>

           </xs:complexContent>

           </xs:complexType>

        </xs:element>

    </xs:schema>

     Attributes only can be simple, not complex

    <?xml version="1.0" encoding="UTF-8"?>

    <!-- edited with XMLSpy v2014(x64) (http://www.altova.com) by Christian Luntzer (Altova GmbH) -->

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

     <xs:element name="gift_voucher">   

      <xs:complexType>

       <xs:attribute ref="voucher_id"/> //local attribute reference to a global attribute declaration

       <xs:attribute name="expiry_date" type="xs:date"/>  //(local attribute) name is mandatory, type is optional  </xs:complexType>

     </xs:element>

     <xs:attribute name="voucher_id" type="xs:positiveInteger"/> global attribute declaration

    <xs:element name="person">  //MinOccurs and MaxOccurs can be used for both element and group

    <xs:complexType>    

    <xs:sequence>

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

    <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

    </xs:schema>

     default/fixed: mutually exclusive

    If an element appeas but is empty, the schema processor provides the default value. If the element is missing, the schema processor does not provide the default value.

    Cannot appear on local element references.

     Attribute's default value will provide a default value for an attribute if the attribute is missing from the xml document. It will not provide a default value for a missing element.

    Group must be defined globally, though the local reference to a globally named group can exist.

    unnamed groups (compositors): xs:sequence; xs:choice; xs:all also can be used foe complex element

      <xs:group name="vehiclegroup" minOccurs="1" maxOccurs="1">

      <xs:choice>  //only one sub-element can be used from a list of sub-elements

       <xs:element name="car"/>

       <xs:element name="motorbike"/>

      </xs:choice>

     </xs:group>

    <xs:element name="car" type="carinfo"/>

    <xs:complexType name="carinfo">

        <xs:sequence>

            <xs:group ref="vehiclegroup"/>    //re-using a group definition , the referenced element has to be a global one.

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

        </xs:sequence>

    </xs:complexType>

     attributeGroup situations arise where there are several different elements that will require the same set of attributes.

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

     <xs:element name="person">

      <xs:complexType>

       <xs:attributeGroup ref="dimensions"/>

      </xs:complexType>

     </xs:element>

     <xs:attributeGroup name="dimensions">

      <xs:attribute name="height" type="xs:positiveInteger"/>

      <xs:attribute name="weight" type="xs:positiveInteger"/>

     </xs:attributeGroup>

    </xs:schema>

     

    Built-in datatypes

    only one complex datatype:

    <xs: element name="para" type="xs:anyType"/> ==<xs:element name="pare"/>

     

    User-defined Simple Types

    simple types can only be derived via restriction. This mean that the derived simple type will only allow a base type it is being derived from. The base type is more general, the derived type is more specific.

    Namespaces

    Mixing Several Namespaces

    <gs:dish xmlns: gs = “http://china.com“

                   xmlns: uom = “http://units.com“>

    <gs:dm uom:unit = “cm“>20</gs:dm>

    <gs:vol uom:unit = “1“>5</gs:vol>

    <gs:decor>Meissner</gs:decor>

    <comment>This is an unqualified element name</comment>

    </gs:dish>

    reference:

  • 相关阅读:
    Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境
    DockOne技术分享(二十):Docker三剑客之Swarm介绍
    最佳实战Docker持续集成图文详解
    Spring Cloud Netflix Eureka源码导读与原理分析
    JVM内存区域的划分(内存结构或者内存模型)
    深入理解JVM(一)——JVM内存模型
    java多线程有哪些实际的应用场景?
    深入理解Java类加载器(1):Java类加载原理解析
    【深入Java虚拟机】之四:类加载机制
    OAuth 2和JWT
  • 原文地址:https://www.cnblogs.com/bruceyo/p/3635230.html
Copyright © 2011-2022 走看看