<?xml version="1.0" encoding="UTF-8"?>
<!--
	source of basic patterns specification
-->

<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.7//EN" "../common/xmlspec.dtd" [

<!ENTITY % entities SYSTEM "../common/entities.dtd" >
%entities;

<!ENTITY prefix "basic" >
<!ENTITY shortstatus "wd" >
<!ENTITY shortname "xmlschema-patterns" >
<!ENTITY status "Editors&apos; Copy $Date: 2009/03/19 21:17:42 $" >

<!ENTITY pubday "@@" >
<!ENTITY pubdd "@@" >
<!ENTITY pubmonth "@@@@" >
<!ENTITY pubnummonth "@@" >
<!ENTITY pubyear "@@@@" >

<!ENTITY prevshortstatus "wd" >
<!ENTITY prevpubday "@@" >
<!ENTITY prevpubdd "@@" >
<!ENTITY prevpubmonth "@@@@" >
<!ENTITY prevpubnummonth "@@" >
<!ENTITY prevpubyear "@@@@" >

<!ENTITY review.end "17 March 2008" >

<!ENTITY advanced-shortname "xmlschema-patterns-advanced" >
<!ENTITY advanced-pubmonth "@@@@" >
<!ENTITY advanced-pubyear "@@@@" >
<!ENTITY advanced-yymmdd "@@@@@@" >


<!ENTITY patterns SYSTEM "patterns.xml">
<!ENTITY patterns-intro SYSTEM "patterns-intro.xml">
<!ENTITY pattern-summary SYSTEM "../common/pattern-summary.xml">
<!ENTITY pattern-summary-table SYSTEM "pattern-table.xml">
<!ENTITY notations SYSTEM "notations.xml">
<!ENTITY namespaces SYSTEM "namespaces.xml">
<!ENTITY ws-i-conformance SYSTEM "ws-i-conformance.xml">
<!ENTITY detecting-patterns SYSTEM "detecting-patterns.xml">
<!ENTITY xpath-idioms SYSTEM "xpath-idioms.xml">
<!ENTITY assertion-summary SYSTEM "../common/assertion-summary.xml">
<!ENTITY schema-summary SYSTEM "../common/schema-summary.xml">
<!ENTITY implementation-assertion-table SYSTEM "implementation-assertion-table.xml">
<!ENTITY document-assertion-table SYSTEM "document-assertion-table.xml">

]>

<spec w3c-doctype="other" role="edcopy">
  <header>
    <title>Basic XML Schema Patterns for Databinding</title>
    <abstract><p>
This specification  provides a set of basic <bibref ref="XMLSchema"/> patterns known to be interoperable between state of the art databinding implementations. The patterns may be used to describe <bibref ref="XML"/> representations of commonly used data structures. The data structures described are intended to be independent of any particular programming language, database or modelling environment.
</p>
    </abstract>
    <version>Version 1.0</version>
    <w3c-doctype>&status;</w3c-doctype>
    <altlocs>
        <loc role='xml' href='&prefix;.xml'>XML</loc>
    </altlocs>
    <pubdate>
      <day>&pubday;</day>
      <month>&pubmonth;</month>
      <year>&pubyear;</year>
    </pubdate>
    <publoc><loc href="http://www.w3.org/2002/ws/databinding/edcopy/basic/basic.html">http://www.w3.org/2002/ws/databinding/edcopy/basic/basic.html</loc></publoc>

    <latestloc><loc href="http://www.w3.org/TR/xmlschema-patterns">http://www.w3.org/TR/xmlschema-patterns</loc></latestloc>

    <prevlocs><loc href="http://www.w3.org/TR/2008/WD-xmlschema-patterns-20080328/">http://www.w3.org/TR/2008/WD-xmlschema-patterns-20080328/</loc></prevlocs>

    <authlist>
      <author>
        <name>Jonathan Calladine</name>
        <affiliation>BT</affiliation>
      </author>
      <author>
        <name>George Cowe</name>
        <affiliation>Origo Services Limited</affiliation>
      </author>
      <author>
	<name>Paul Downey</name>
	<affiliation>BT</affiliation>
      </author>
      <author>
	<name>Yves Lafon</name>
	<affiliation>W3C</affiliation>
      </author>

    </authlist>
    <status>
      <p><emph>This section describes the status of this specification at the time of its publication. Other specification may supersede this specification. A list of current W3C publications and the latest revision of this technical report can be found in the <loc href="http://www.w3.org/TR/">W3C technical reports index</loc> at http://www.w3.org/TR/.</emph></p>

<p>This is a public Working Group Note produced by the <a href="http://www.w3.org/2002/ws/databinding/">XML Schema Patterns for Databinding Working Group</a>, which is part of the <a href=
"http://www.w3.org/2002/ws/Activity">W3C Web Services Activity</a>. This publication as a Working Group Note coincides with the end of the Working Group's charter period, and represents the culmination of the group's work.</p>
<p>Comments from interested parties and incorporates comments received since the first Last Call publication on <a href="http://www.w3.org/TR/2006/WD-xmlschema-patterns-20061122/">2006-11-22</a> of this document were sent to the public <loc href="mailto:public-xsd-databinding-comments@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-xsd-databinding-comments@w3.org</loc>
 mailing list (<loc href="http://lists.w3.org/Archives/Public/public-xsd-databinding-comments/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public
 archive</loc>). </p>
<p>
This document was built using evidence and experience gained examining the interoperability of a significant number of 
state of the art databinding implementations using a <loc href="http://www.w3.org/2002/ws/databinding/testsuite/">test suite</loc>, see the <loc href="http://www.w3.org/2002/ws/databinding/edcopy/report/basic.html">Basic Patterns Implementation Report</loc> and a collection of implementation reports including the <loc href="http://www.w3.org/2002/ws/databinding/edcopy/collection/">collection</loc> of patterns detected from "the wild".</p>

<p>The Working Group also produced an accompanying <bibref ref="AdvancedPatterns"/> document, which includes <bibref ref="XMLSchema"/> patterns in common use, but which were discovered not to be well supported by state of the art databinding implementations.</p> 

<p>Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft specification and may be updated, replaced or obsoleted by other specification at any time. It is inappropriate to cite this specification as other than work in progress.</p>
<p>This document was produced by a Working Group operating under the <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">5
  February 2004 W3C Patent Policy</loc>. The W3C maintains a <loc href="http://www.w3.org/2004/01/pp-impl/36696/status#specs" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public
  list of any patent disclosures</loc> made in connection with the
  deliverables of the group; that page also includes instructions for
  disclosing a patent. An individual who has actual knowledge of a
  patent which the individual believes contains <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Essential
  Claim(s)</loc> must disclose the information in accordance with <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">section
  6 of the W3C Patent Policy</loc>. </p>


    </status>

    <langusage>
      <language id="en-US">US English</language>
    </langusage>
  </header>
  <body>
    <div1 id="Introduction"><head>Introduction</head>
<p>
A databinding tool generates a mapping between <bibref ref="XML"/> documents which 
conform to an <bibref ref="XMLSchema"/> schema and an internal data representation.
For example, a Web services databinding tool may use <bibref ref="XMLSchema"/> descriptions inside a <bibref ref="WSDL20"/> or <bibref ref="WSDL11"/> document to produce and consume <bibref ref="XML"/>, <bibref ref="SOAP12"/> and <bibref ref="SOAP11"/> messages in terms of data structures in a programming language or data held inside a database.
</p>
<p>
<bibref ref="XMLSchema"/> provides a wide variety of methods for describing the same <bibref ref="XML"/> structure.
Conversely an abstract concept such as "null" may be represented in a wide variety of 
different ways using <bibref ref="XMLSchema"/>.
</p>
<p>
A representative collection of databinding implementations in common use has been used 
to provide an indication of the  "state of the art". 
State of the art databinding implementations have displayed uneven and inconsistent
support of the W3C <bibref ref="XMLSchema"/> Recommendation resulting in
impaired interoperability and a poor user experience of databinding tools:
</p>
<ulist>
    <item>rejecting valid <bibref ref="XMLSchema"/> documents,</item>
    <item>rejecting valid <bibref ref="XML"/> instance documents, and</item>
    <item>making the content of valid <bibref ref="XML"/> instance documents unavailable in mapped data structures.</item>
</ulist>
<p>
This specification provides a basic set of example <bibref ref="XMLSchema" /> constructs and types in the form of concrete <bibref ref="XPath20"/> expressions. These patterns are known to work well with state of the art databinding implementations.</p>
<p>
Authors of <bibref ref="XMLSchema"/> documents may find these patterns useful in providing a better user experience for consumers of their schemata using databinding tools.
Whilst it is not possible to guarantee that schemata produced using these
patterns will give a good user experience with the universal set of databinding 
tools, the patterns contained in this specification have been all been tested with 
a number of different tools covering a variety of different programming languages and environments.
</p>
<p>
Implementers of databinding tools may find these patterns useful to represent simple and common place data structures. Ensuring tools recognize at least these simple <bibref ref="XMLSchema"/> patterns and present them in terms most appropriate to the specific language, database or environment will provide an improved user experience when using databinding tools.
It is inappropriate to use this specification to constrain implementation of the <bibref ref="XMLSchema"/> Recommendation. </p>

<!--
<ednote><name>pdowney</name><date>2006-10-11</date><edtext id="ISSUE-XX">ISSUE-XX</edtext></ednote>
-->

      &notations;

      &namespaces;

      <div2 id="document-conformance">
	<head>Document Conformance</head>
	    <p id="ISSUE-40">
		A document claiming conformance to this specification:</p>
	    <ulist>
	    <item><assert class="document" id="assert-Unicode">MUST use either the UTF-8 or UTF-16 <bibref ref="Unicode"/> encoding.</assert></item>
	    <item><assert class="document" id="assert-BOM">MAY include the <bibref ref="Unicode"/> Byte Order Mark (<bibref ref="BOM"/>).</assert></item>
	    <item><assert class="document" id="assert-XML10">MUST be a well-formed <bibref ref="XML"/> document</assert></item>
	    <item><assert class="document" id="assert-XMLSchema10">MUST be a 'schema
			document', as defined in <bibref ref="XMLSchema"/>, and MUST
			therefore meet the "<a id="lc-xsd-1" href="http://www.w3.org/TR/xmlschema-1/#gloss-src">Constraints on the representation of schema components	in XML</a>" provided therein.</assert></item>
		    <item id="ISSUE-16"><assert class="document" id="assert-BasicPatterns">MUST only contain <bibref ref="XML"/> element nodes and attribute nodes which form a part of one or more complete patterns contained in this specification.</assert></item>
	    <item><assert class="document" id="assert-CommentsAndPIs">MAY contain additional <bibref ref="XML"/> comment nodes and processing instruction nodes.</assert></item>
	    </ulist>

      </div2>
      <div2 id="implementation-conformance">
	<head>Implementation Conformance</head>
	    <p>An implementation that claims conformance to this specification:</p>
<ulist>
<item><assert class="implementation" id="assert-SchemaValid">MUST be able to process any <bibref ref="XMLSchema"/> document conforming to this specification</assert></item> 
<item><assert class="implementation" id="assert-DataModel">MUST produce a data model exposing all of the <bibref ref="XML"/> element node and attribute node content constrained by the originating <bibref ref="XMLSchema"/> document.</assert></item>
<item><assert class="implementation" id="assert-ConsumeXML">MUST be able to consume any well-formed <bibref ref="XML"/> document which satisfies local-schema validity against the originating <bibref ref="XMLSchema"/> document exposing all of the <bibref ref="XML"/> element node and attribute node content in the data model.</assert></item>
<item><assert class="implementation" id="assert-ProduceXML">MUST be able to produce well-formed <bibref ref="XML"/> instance documents which satisfy local-schema validity against the originating <bibref ref="XMLSchema"/> document containing values exposed in the data model.</assert></item>
<item><assert class="implementation" id="assert-ConsumeInvalidAllowed">MAY consume well-formed <bibref ref="XML"/> instance documents which do not satisfy local-schema validity against the originating <bibref ref="XMLSchema"/> document.</assert></item>
<item><assert class="implementation" id="assert-ProduceInvalidAllowed">MAY allow the production of well-formed <bibref ref="XML"/> instance documents containing values exposed in the data model which do not satisfy local-schema validity against the originating <bibref ref="XMLSchema"/> document.</assert></item>
</ulist>

<p id="ISSUE-3">Describing the form of the data model provided by a databinding implementation is 
beyond the scope of this specification.  For example, the unconstrained built-in numeric 
primitive types, 
<code>xs:decimal</code>, 
<code>xs:integer</code>, 
<code>xs:negativeInteger</code>, 
<code>xs:positiveInteger</code>, 
<code>xs:nonNegativeInteger</code> and 
<code>xs:nonPositiveInteger</code>, 
do not map directly to native types 
in many programming languages and are likely to be presented as a toolkit specific construct 
or more generalised ways, such as a 'string'.</p>

<p id="ISSUE-72">Note that although the patterns contained in this document are defined using <bibref ref="XPath20"/>, there is no requirement for a conformant implementation to support <bibref ref="XPath20"/>.</p>
      </div2>

    </div1>

    <div1 id="patterns"><head>Schema Patterns</head>
	
	&patterns-intro;

      <explanation xml:id="SchemaElement">
	<p>
	<assert id="assert-SchemaElement" class="document">The <code>xs:schema</code>
	 element MAY be the document element, 
	but MAY also appear within other descriptions such as a <bibref ref="WSDL20"/> or 
	<bibref ref="WSDL11"/> document.
	</assert>
	</p>
      </explanation>

      <explanation xml:id="IdentifierName">
	<p id="ISSUE-10">
	Note, this pattern represents a subset of the native identifier formats 
	supported by many, but not all, implementations and is therefore most likely to be 
        supported by a databinding tools which directly maps an <bibref ref="XML"/> 
	 <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> 
	to an native identifier.
	</p>

	<p><assert id="assert-AttributeElementNameClash" class="document">
	The <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> used 
	to declare an <bibref ref="XML" /> attribute MUST NOT be used as the declared 
	 <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> 
	of a child element.
	</assert>
	</p>
      </explanation>

      <explanation xml:id="StringEnumerationType">
	<p id="ISSUE-6">
	Note, this pattern may be further constrained by the regular expression used by the 
	 <specref ref="pattern-IdentifierName"/> pattern
        to support databinding tools which directly map an <code>xs:enumeration</code>
	value to an native identifier.
	</p>
      </explanation>


      <explanation xml:id="TargetNamespace">
	    <p id="ISSUE-26-1">
	    <assert id="assert-TargetNamespace" class="document">
	    An <bibref ref="XMLSchema"/> document conforming to this specification MUST 
	    define a <code>targetNamespace</code> whose value is an absolute URI.
	    </assert>
	    </p>
      </explanation>

      <explanation xml:id="ImportTypesNamespace">
	    <p>
		This pattern is designed to capture a reference to a namespace
		defined within a WSDL document types section.
	    </p>
      </explanation>


      <explanation xml:id="QualifiedLocalElements">
	    <p id="ISSUE-27"><assert id="assert-QualifiedLocalElements" class="document">
	    An <bibref ref="XMLSchema"/> document conforming to this specification MUST namespace
	    qualify all locally declared elements using a schema element 
	    <code>elementFormDefault</code> attribute value of <code>qualified</code>.
	    </assert></p>
      </explanation>


	    &patterns;
    </div1>

    <div1 id="refs">
      <head>References</head>

      <div2 id="normrefs">
        <head>Normative References</head>
	<blist>

    <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XMLSchema" key="XML Schema 1.0" 
	    xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	  Henry S. Thompson, David Beech, Murray Maloney, and Noah Mendelsohn, Editors. 
    World Wide Web Consortium.
    <emph>XML Schema, Parts 0, 1, and 2 (Second Edition)</emph>. W3C Recommendation, 28 October 2004. See 
    <loc href="http://www.w3.org/TR/xmlschema-0/" id="schema0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/xmlschema-0/</loc>, 
    <loc href="http://www.w3.org/TR/xmlschema-1/" id="schema1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/xmlschema-1/</loc>, and 
    <loc href="http://www.w3.org/TR/xmlschema-2/" id="schema2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/xmlschema-2/</loc>.
    </bibl>


	  <bibl key="XPath 2.0" id="XPath20" href="http://www.w3.org/TR/2006/CR-xpath20-20060608/">
	    <titleref href="http://www.w3.org/TR/2006/CR-xpath20-20060608/">
		XML Path Language (XPath) 2.0</titleref>, 
		Don Chamberlin , Anders Berglund, Scott Boag, et. al., Editors. World Wide Web Consortium, 3 Nov 2005.  The <loc href="http://www.w3.org/TR/xpath20/">latest version</loc> 
		    is available at http://www.w3.org/TR/xpath20/.</bibl> 

	<bibl id="XMLNS" key="XML Namespaces"
	    href="http://www.w3.org/TR/1999/REC-xml-names-19990114">
	    <titleref>Namespaces in XML</titleref>, T. Bray, D. Hollander, and A.
	    Layman, Editors. World Wide Web Consortium, 14 January 1999. 
	    The <loc href="http://www.w3.org/TR/REC-xml-names">latest version</loc>
		is available at http://www.w3.org/TR/REC-xml-names.</bibl>

<bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XML" key="XML 1.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">World Wide Web Consortium.
<emph>Extensible Markup Language (XML) 1.0. (Fourth Edition)</emph>
W3C Recommendation, 16 August 2006.
See <loc href="http://www.w3.org/TR/REC-xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/REC-xml</loc>
</bibl>

	  <bibl key="RFC 2119" id="RFC2119" href="http://www.ietf.org/rfc/rfc2119.txt"><titleref href="http://www.ietf.org/rfc/rfc2119.txt">Key words for use in RFCs to Indicate Requirement Levels</titleref>, S. Bradner, Editor.  IETF, March 1997.</bibl> 

 <bibl id="RFC3986" key="RFC 3986" href="http://www.ietf.org/rfc/rfc3986.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
	    <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Uniform Resource Identifiers (URI): Generic
	    Syntax</titleref>, T. Berners-Lee, R. Fielding, L. Masinter,
	    Authors. Internet Engineering Task Force, January 2005. Available at http://www.ietf.org/rfc/rfc3986.txt.
	  </bibl>

<bibl id="Unicode" key="Unicode">
The Unicode Consortium. <emph>The Unicode Standard, Version 4.0</emph>. 
Reading, Mass.: Addison-Wesley, 2003, as updated from time to time by 
the publication of new versions.
(See 
<loc href="http://www.unicode.org/unicode/standard/versions">http://www.unicode.org/unicode/standard/versions</loc>
for the latest version and additional information on versions of the 
standard and of the Unicode Character Database)
</bibl>


	</blist>
      </div2>

      <div2 id="informrefs">
        <head>Informative References</head>
	<blist>

	    <bibl key="Advanced Patterns" id="AdvancedPatterns"
		href="http://www.w3.org/TR/&advanced-shortname;/">
	    <titleref href="http://www.w3.org/TR/&advanced-shortname;">
		Advanced XML Schema Patterns for Databinding 1.0
	    </titleref>, 
		Jonathan Calladine, George Cowe, Paul Downey, Yves Lafon, Editors. World Wide Web Consortium, &advanced-pubmonth;, &advanced-pubyear;.  The latest version of <loc href="http://www.w3.org/TR/&advanced-shortname;/">Advanced Patterns</loc> is available at http://www.w3.org/TR/&advanced-shortname;/.</bibl> 

	    <bibl key="WSDL 2.0" id="WSDL20"
		href="http://www.w3.org/TR/2006/CR-wsdl20-20060106/">
		<titleref>Web Services Description Language (WSDL) Version 2.0 Part 1: Core
		    Language</titleref>, R. Chinnici, J. J. Moreau, A. Ryman, S.
		Weerawarana, Editors. World Wide Web Consortium, 6 January 2006.
		The <loc href="http://www.w3.org/TR/wsdl20">latest version</loc> is
		available at http://www.w3.org/TR/wsdl20.</bibl>

	  <bibl id="WSDL11" key="WSDL 1.1"
		href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315">E. Christensen, et al,
	    <titleref>Web Services Description Language (WSDL) 1.1</titleref>, March 2001.</bibl>

		    <bibl id="SOAP12" key="SOAP 1.2"
                        href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/">
                        <titleref>SOAP Version 1.2 Part 1: Messaging Framework</titleref>, M.
                        Gudgin, M. Hadley, N. Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, Editors.
                        World Wide Web Consortium, 24 June 2003. 
                        The <loc href="http://www.w3.org/TR/soap12-part1/">latest version</loc>
                            is available at http://www.w3.org/TR/soap12-part1/. </bibl>

                    <bibl id="SOAP11" key="SOAP 1.1"
                        href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/"><titleref>Simple Object
                            Access Protocol (SOAP) 1.1</titleref>, D. Box, D. Ehnebuske, G.
                        Kakivaya, A. Layman, N. Mendelsohn, H Frystyk Nielsen, S. Thatte, D. Winer,
                        Editors. W3C Member Submission, 8 May 2000.</bibl>

	    <bibl key="XSLT 2.0" id="XSLT20"
		href="http://www.w3.org/TR/2006/CR-xslt20-20060608/">
		<titleref>XSL Transformations (XSLT) Version 2.0</titleref>, M. Kay, Editor. 
		World Wide Web Consortium, 8 June 2006.  The 
		    <loc href="http://www.w3.org/TR/xslt20/">latest version</loc> 
		    is available at http://www.w3.org/TR/xslt20.</bibl>

                    <bibl id="WSI-BP" key="WS-I Basic Profile 1.1"
			href="http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html"><titleref>WS-I Basic Profile 1.1</titleref>,
			Web Services Interoperability Organization, April 2004
		    The <loc href="http://www.ws-i.org/Profiles/BasicProfile-1.1.html">latest version</loc> and errata is available from http://www.ws-i.org/Profiles/BasicProfile-1.1.html.
			</bibl>

<!--
	  <bibl key="X.694" id="X.694" href="http://www.itu.int/ITU-T/studygroups/com17/languages/X694.pdf"> <titleref href="http://www.itu.int/ITU-R/">Information technology - ASN.1 encoding rules: Mapping W3C XML schema definitions into ASN.1</titleref>, International Telecommunications Union Recommendation. X.694 January 2004.  </bibl>
-->

          <bibl key="Schematron" id="Schematron" href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c040833_ISO_IEC_19757-3_2006%28E%29.zip">
<titleref href="http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=40833&amp;ICS1=35&amp;ICS2=240&amp;ICS3=30">ISO/IEC 19757-3:2006</titleref>, Information technology - Document Schema Definition Languages (DSDL) - Part 3: Rule-based validation - International Standards Organization (JTC1/SC34) - <loc href="http://www.schematron.org">Schematron</loc>.  
	</bibl>

	    <bibl key="BOM" id="BOM" href="http://www.unicode.org/unicode/faq/utf_bom.html#BOM">
		<titleref>Unicode Frequently Asked Questions</titleref></bibl>

	    <bibl key="Timezone" id="Timezone" href="http://www.w3.org/TR/2005/NOTE-timezone-20051013/">
		<titleref>Working with Time Zones</titleref>, Addison Phillips, Felix Sasaki, Mark Davis, Martin D&#252;rst, 
 Editors. World Wide Web Consortium, 13 October 2005.
		The <loc href="http://www.w3.org/TR/timezone/">latest version</loc> is
		available at http://www.w3.org/TR/timezone/.</bibl>

	</blist>
      </div2>

    </div1>
  </body>

  <back> 

    <inform-div1 id="structures">
	<head>Data Types &amp; Structures</head>

<p id="ISSUE-37">
This section offers one or more patterns which may be used
to represent an abstract data structure.
Each data structure presented is intended to be independent of any particular programming language, 
database or modeling environment.
No semantics are implied by the order in which patterns are listed for a given abstract 
data structure.
</p>

      <div2 id="optional"><head>Null Value</head>
	<glist>
	    <label>Definition</label>
	    <def>A special value used to represent an "unknown", "missing", "not applicable", "uninitialised" or "undefined value".
	    </def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><specref ref="pattern-ElementMinOccurs0"/></item>
		<item><specref ref="pattern-NillableElement"/></item>
		<item><specref ref="pattern-NullEnumerationType"/></item>
		<item><specref ref="pattern-ElementEmptySequence"/></item>
		<item><specref ref="pattern-ElementEmptyComplexType"/></item>
	      </ulist>
	    </def>
        </glist>
      </div2>

      <div2 id="default"><head>Default Value</head>
	<glist>
	    <label>Definition</label>
	    <def>A preselected value used by when no alternative is explicitly specified.</def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><em>none</em></item>
	      </ulist>
	    </def>
	</glist>
      </div2>

      <div2 id="enumeration"><head>Enumeration</head>
	<glist>
	    <label>Definition</label>
	    <def>A type whose definition contains an exhaustive list of possible values.</def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><specref ref="pattern-StringEnumerationType"/></item>
	      </ulist>
	    </def>
	</glist>
      </div2>

      <div2 id="collection"><head>Collection</head>
	<glist>
	    <label>Definition</label>
	    <def>A collection of data items, typically contained by a programming language "object", "class", "structure", or "record".</def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><specref ref="pattern-GlobalComplexType"/></item>
		<item><specref ref="pattern-GlobalElementSequence"/></item>
		<item><specref ref="pattern-LocalElementComplexType"/></item>
		<item><specref ref="pattern-ComplexTypeSequence"/></item>
		<item><specref ref="pattern-ComplexTypeAttribute"/></item>
	      </ulist>
	    </def>
	</glist>
      </div2>

      <div2 id="inheritance"><head>Inherited Collection</head>
	<glist>
	    <label>Definition</label>
	    <def>A collection which extends an existing collection.</def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><specref ref="pattern-ComplexTypeAttributeExtension"/></item>
		<item><specref ref="pattern-ComplexTypeSequenceExtension"/></item>
	      </ulist>
	    </def>
	</glist>
      </div2>

      <div2 id="vector"><head>Vector</head>
	<glist>
	    <label>Definition</label>
	    <def>An ordered sequence of items of the same type. This construct appears in programming languages as an array or list.</def>
	    <label>Patterns</label>
	    <def>
	      <ulist>
		<item><specref ref="pattern-ElementMinOccurs0MaxOccursUnbounded"/></item>
		<item><specref ref="pattern-ElementMinOccurs1MaxOccursUnbounded"/></item>
		<item><specref ref="pattern-SequenceSingleRepeatedElement"/></item>
	      </ulist>
	    </def>
	</glist>
      </div2>
    </inform-div1>

    &detecting-patterns;

    &xpath-idioms;

    &pattern-summary;

    &assertion-summary;

    &schema-summary;

    &ws-i-conformance;

    &acknowledgements;

  </back>

</spec>

