[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xml-dev
Subject:    [xml-dev] Examples of all the different ways of creating XML Schema simpleTypes
From:       "Costello, Roger L." <costello () mitre ! org>
Date:       2011-06-24 17:53:18
Message-ID: 9E51F88D5247B648908850C35A3BBB500599FBB2B3 () IMCMBX3 ! MITRE ! ORG
[Download RAW message or body]

Hi Folks,

Below is an XML Schema. It contains examples of all the different ways of creating \
simpleTypes. Please let me know if there are other ways that I haven't accounted for. \
/Roger


<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                     targetNamespace="http://www.example.org"
                     xmlns="http://www.example.org"
                     elementFormDefault="qualified">
        
    <!-- 
        Lists
        1. An unbounded list of integers
        2. A list of integers, constrained to 10 items in the list
        3. A restriction of a type that is a list of integers, constrained to 5 items \
                of the type
        4. A list of strings that are constrained by a regex and a maxLength of 15, \
                and the list is constrained to 4 items
    -->
    
    <!-- ******************************** -->
    <!-- 1. An unbounded list of integers -->
    <!-- ******************************** -->
    
    <xsd:element name="Numbers" type="Numbers" />
    
    <xsd:simpleType name="Numbers">
        <xsd:list itemType="xsd:integer" />
    </xsd:simpleType>
    
    <!-- ********************************************************** -->
    <!-- 2. A list of integers, constrained to 10 items in the list -->
    <!-- ********************************************************** -->
    
    <xsd:element name="Ten-Numbers" type="Ten-Numbers" />
    
    <xsd:simpleType name="Ten-Numbers">
        <xsd:restriction>
            <xsd:simpleType>
                <xsd:list itemType="xsd:integer" />
            </xsd:simpleType>
            <xsd:length value="10"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <!-- ***************************************************************************************** \
-->  <!-- 3. A restriction of a type that is a list of integers, constrained to 5 \
items of the type -->  <!-- \
***************************************************************************************** \
-->  
    <xsd:element name="Five-Numbers" type="Five-Numbers" />
    
    <xsd:simpleType name="Five-Numbers">
        <xsd:restriction base="Numbers">
            <xsd:length value="5"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <!-- ****************************************************************************************************************** \
-->  <!-- 4. A list of strings that are constrained by a regex and a maxLength of 15, \
and the list is constrained to 4 items -->  <!-- \
****************************************************************************************************************** \
-->

    <xsd:element name="Names" type="Names" />
    
    <xsd:simpleType name="Names">
        <xsd:restriction>
            <xsd:simpleType>
                <xsd:list itemType="Name"/>
            </xsd:simpleType>
            <xsd:length value="4"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="Name">
        <xsd:restriction base="xsd:string">
            <xsd:maxLength value="15" />
            <xsd:pattern value="[a-zA-Z]*" />
        </xsd:restriction>
    </xsd:simpleType>
    
    <!-- *********************************************** -->
    <!-- 5. Same as (4), except the list type is inlined -->
    <!-- *********************************************** -->
    
    <xsd:element name="Names-Inlined" type="Names-Inlined" />
    
    <xsd:simpleType name="Names-Inlined">
        <xsd:restriction>
            <xsd:simpleType>
                <xsd:list>
                    <xsd:simpleType >
                        <xsd:restriction base="xsd:string">
                            <xsd:maxLength value="15" />
                            <xsd:pattern value="[a-zA-Z]*" />
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:list>
            </xsd:simpleType>
            <xsd:length value="4"/>
        </xsd:restriction>
    </xsd:simpleType>
    

    
    <!-- 
        Unions
        6. A union of string and integer
        7. A union of a nonNegativeInteger and a single string
        8. A union of a strings of maxLength 10 and integers of maxInclusive 50
        9. A simpleType that is a synonym for the Names-and-Numbers simpleType
    -->
    
    <!-- ******************************** -->
    <!-- 6. A union of string and integer -->
    <!-- ******************************** -->

    <xsd:element name="Names-and-Numbers" type="Names-and-Numbers" />
    
    <xsd:simpleType name="Names-and-Numbers">
        <xsd:union memberTypes="xsd:string xsd:integer" />
    </xsd:simpleType>
    
    <!-- ****************************************************** -->
    <!-- 7. A union of a nonNegativeInteger and a single string -->
    <!-- ****************************************************** -->
    
    <xsd:element name="maxOccurs" type="maxOccurs" />
    
    <xsd:simpleType name="maxOccurs">
        <xsd:union memberTypes="xsd:nonNegativeInteger" >
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="unbounded" />
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>
 
    <!-- *********************************************************************** -->
    <!-- 8. A union of a strings of maxLength 10 and integers of maxInclusive 50 -->
    <!-- *********************************************************************** -->
    
    <xsd:element name="Restricted-Names-and-Numbers" \
type="Restricted-Names-and-Numbers" />  
    <xsd:simpleType name="Restricted-Names-and-Numbers">
        <xsd:union>
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:maxLength value="10" />
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType>
                <xsd:restriction base="xsd:integer">
                    <xsd:maxInclusive value="50" />
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>

    <!-- ********************************************************************** -->
    <!-- 9. A simpleType that is a synonym for the Names-and-Numbers simpleType -->
    <!-- ********************************************************************** -->
    
    <xsd:element name="My-Names-and-Numbers" type="My-Names-and-Numbers" />
    
    <xsd:simpleType name="My-Names-and-Numbers">
        <xsd:restriction base="Names-and-Numbers" />
    </xsd:simpleType>
    
    <!-- 
        Other
        10. A simpleType restricts a simpleType which restricts another simpleType
        11. Same as (10) except all simpleTypes are inlined
    -->
    
    <!-- ************************************************************************** \
-->  <!-- 10. A simpleType restricts a simpleType which restricts another simpleType \
-->  <!-- ************************************************************************** \
-->  
    <xsd:simpleType name="BostonAreaSurfaceElevation">
        <xsd:restriction base="EarthSurfaceElevation">
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="120"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="EarthSurfaceElevation">
        <xsd:restriction base="Elevation">
            <xsd:minInclusive value="-1290"/>
            <xsd:maxInclusive value="29035"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <xsd:simpleType name="Elevation">
        <xsd:restriction base="xsd:integer">
            <xsd:minInclusive value="-999999"/>
            <xsd:maxInclusive value="999999"/>
        </xsd:restriction>
    </xsd:simpleType>
    
    <!-- *************************************************** -->
    <!-- 11. Same as (10) except all simpleTypes are inlined -->
    <!-- *************************************************** -->
    
    <xsd:simpleType name="BostonAreaSurfaceElevation-Inlined">
        <xsd:restriction>
            <xsd:simpleType>
                <xsd:restriction>
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:integer">
                            <xsd:minInclusive value="-999999"/>
                            <xsd:maxInclusive value="999999"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                    <xsd:minInclusive value="-1290"/>
                    <xsd:maxInclusive value="29035"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:minInclusive value="0"/>
            <xsd:maxInclusive value="120"/>
        </xsd:restriction>
    </xsd:simpleType>
    
</xsd:schema>

_______________________________________________________________________

XML-DEV is a publicly archived, unmoderated list hosted by OASIS
to support XML implementation and development. To minimize
spam in the archives, you must subscribe before posting.

[Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
subscribe: xml-dev-subscribe@lists.xml.org
List archive: http://lists.xml.org/archives/xml-dev/
List Guidelines: http://www.oasis-open.org/maillists/guidelines.php


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic