2002/ws/desc/schema-patterns Makefile,NONE,1.1 entities.dtd,NONE,1.1 entitiesedcopy.dtd,NONE,1.1 xml-schema-patterns.xml,NONE,1.1 xmlspec-wsdl.xsl,NONE,1.1 xmlspec.dtd,NONE,1.1 xmlspec.xsl,NONE,1.1 xml-schema-patterns.html,NONE,1.1

Update of /sources/public/2002/ws/desc/schema-patterns
In directory hutz:/tmp/cvs-serv20630

Added Files:
	Makefile entities.dtd entitiesedcopy.dtd 
	xml-schema-patterns.xml xmlspec-wsdl.xsl xmlspec.dtd 
	xmlspec.xsl xml-schema-patterns.html 
Log Message:
initial version

--- NEW FILE: Makefile ---
# $Id: Makefile,v 1.1 2005/07/01 15:27:25 pdowney Exp $

PREFIX=xml-schema-patterns
WSDL20.xml=$(PREFIX).xml

SCHEMAS=\
wsdl20.xsd\
wsdl20-instance.xsd\
wsdl20-rpc.xsd

FILES=\
$(WSDL20.xml) \
$(IMAGES) \
../wsdl20/xmlspec.dtd \
entitiesedcopy.dtd\
entities.dtd

include ../wsdl20/Makefile.base

--- NEW FILE: xml-schema-patterns.xml ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: xml-schema-patterns.xml,v 1.1 2005/07/01 15:27:25 pdowney Exp $ -->
<?xml-stylesheet type='text/xsl' href='xmlspec-wsdl.xsl'?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.1//EN" "xmlspec.dtd" [
<!ENTITY % entities SYSTEM "entities.dtd">
<!ENTITY status SYSTEM "status.xml">

%entities;

<!--
<!ENTITY status "W3C Working Draft">
-->
<!ENTITY prevloc "http://www.w3.org/TR/2005/NOTE-xml-schema-patterns-20050502">
]>
<spec w3c-doctype="wgnote" role="&document.role;">
  <header>
    <title>XML Schema Patterns for Common Data Structures</title>
    <w3c-designation/>
    <w3c-doctype>&document.status;</w3c-doctype>
    <pubdate>
      <day>&draft.day;</day>
      <month>&draft.month;</month>
      <year>&draft.year;</year>
    </pubdate>
    <publoc>
      <loc href="http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-pattersn.html"
        >http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-patterns.html</loc>
    </publoc>
    <prevlocs>
      <loc href="http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-pattersn.html"
        >http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-patterns.html</loc>
    </prevlocs>
    <latestloc>
      <loc
        href="http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/xml-schema-pattersn.html?content-type=text/html;%20charset=utf-8"
        >http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/xml-schema-patterns.html</loc>
    </latestloc>
    <authlist>
      <author>
        <name>Paul Downey</name>
        <affiliation>BT</affiliation>
      </author>
    </authlist>
    <status id="Status">
      <p>
        <emph>The intention is that this document will be published as a Web Services Description
          Working Group Note, although the Working Group has show interest in this work taking
          place, the Working Group has yet to review or approve this document.</emph>
      </p>
    </status>
    <abstract>
      <p>This document provides a set of simple XML Schema 1.0 patterns for describing commonly used
        data structures. The data structures described are intended to be independent of any
        particular programming language or database or modelling environment.</p>
      <p> Authors of tools which map or bind data structures to XML may find these simple patterns
        useful in facilitating the mapping of commonplace constructs to and from XML. </p>
      <p> Authors of XML Schema 1.0 documents may also find these patterns useful in providing a
        good user experience for consumers using data mapping and binding tools. </p>
    </abstract>
    <langusage>
      <language id="en">English</language>
    </langusage>
    <revisiondesc>
      <p>Last Modified: $Date: 2005/07/01 15:27:25 $</p>
    </revisiondesc>
  </header>
  <body>
    <div1 id="introduction">
      <head>Introduction</head>
      <p>

        <ednote><edtext>Explanation of how schema may be used as a description language, as well as for
          validation. Reference to WSDL which uses XML Schema for such a purpose</edtext></ednote>
      </p>
      <div2 id="notational">
        <head>Notational Conventions</head>
        <p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
          NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
          described in <bibref ref="rfc2119"/>. </p>
        <p>This specification uses properties from the XML Information Set (see <bibref
            ref="XMLInfoSet"/>). Such properties are denoted by square brackets, e.g. [namespace
          name]. </p>
        <p>This specification uses namespace prefixes that are listed in Table 1. Note that the
          choice of any namespace prefix is arbitrary and not semantically significant (see <bibref
            ref="XMLInfoSet"/>). </p>
        <table border="1" summary="Mapping of prefixes used in this document to their associated
          namespace name" id="tabnsprefixes">
          <caption>Table 1. Prefixes and Namespaces used in this specification</caption>
          <tbody>
            <tr>
              <th>Prefix</th>
              <th>Namespace</th>
              <th>Definition</th>
            </tr>
            <tr>
              <td>xs</td>
              <td>"http://www.w3.org/2001/XMLSchema"</td>
              <td>Defined in the W3C XML Schema specifications <bibref ref="XMLSchemaP1"/>, <bibref
                  ref="XMLSchemaP2"/>. </td>
            </tr>
            <tr>
              <td>xsi</td>
              <td>"http://www.w3.org/2001/XMLSchema-instance"</td>
              <td>Defined in the W3C XML Schema specification <bibref ref="XMLSchemaP1"/>. </td>
            </tr>
          </tbody>
        </table>
        <p>Namespace names of the general form "http://example.org/..." and "http://example.com/..."
          represent application or context-dependent URIs (see <bibref ref="rfc3986"/>). </p>
        <p>All parts of this specification are normative, with the exception of examples and
          sections explicitly marked as &quot;Non-Normative&quot;. </p>
      </div2>
    </div1>
    <div1 id="Data-Structures">
      <head>Common Data Structures</head>
      <p/>

      <div2 id="Enumerated">
	<head>Enumerated Types</head>
	<p></p>

	<example id="eg-closed-enum">
	  <head>Closed Enumerated Type</head>
	  <eg xml:space="preserve"><![CDATA[
<xs:simpleType name='Beatle' >
  <xs:restriction base='xs:string' >
   <xs:enumeration value='John' />
   <xs:enumeration value='Paul />
   <xs:enumeration value='George' />
   <xs:enumeration value='Stuart' />
   <xs:enumeration value='Pete' />
   <xs:enumeration value='Ringo' />
  </xs:restriction>
</xs:simpleType>
]]></eg>
	</example>
<p>
</p>

	<example id="eg-open-enum">
	  <head>Open Enumerated Type</head>
	  <eg xml:space="preserve"><![CDATA[
<xs:simpleType name='Fruit' >
  <xs:restriction base='xs:string' >
   <xs:enumeration value='Apple' />
   <xs:enumeration value='Pear' />
   <xs:enumeration value='Banana' />
  </xs:restriction>
</xs:simpleType>

<xs:simpleType name='Pudding' >
  <xs:union memberTypes='tns:Fruit  xs:string' />
</xs:simpleType>
]]></eg>
	</example>

      </div2>

      <div2 id="Collection">
	<head>Collections</head>
	<p></p>

<ednote><edtext>
A collection of data items (an object, class, structure, record etc)
is best represented as a complexType with the individual items as
elements and/or attributes. Sadly it needs saying that the compositors
"sequence", "all" *and* "choice" should be supported.
</edtext></ednote>


	<example id="eg-simple-collection">
	  <head>Simple Collection</head>
	  <eg xml:space="preserve"><![CDATA[
<xs:complexType name="ProductType">
  <xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="colour" type="xs:string"/>
  </xs:sequence>
  <xs:attribute name="id" type="xs:string" />
</xs:complexType>
]]></eg>
	</example>
	<p></p>


<ednote><edtext>
Explicit (active) extensibility of a collection may be expressed
using 'any' and 'anyAttribute' as in the following example adapted 
from the draft TAG finding on extensibility and versioning[2]:
</edtext></ednote>


	<example id="eg-extended-collection">
	  <head>Extending a Collection</head>
	  <eg xml:space="preserve"><![CDATA[
 <xs:complexType name="ProductType">
    <xs:sequence>
      <xs:element name="name" type="xs:string"
	  minOccurs="1" maxOccurs="1"/>
      <xs:element name="colour" type="xs:string"/>
      <xs:any processContents="lax"
	    minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
   <xs:attribute name="id" type="xs:string" />
   <xs:anyAttribute/>
 </xs:complexType>
]]></eg>
	</example>

<ednote><edtext>
The 'any' wildcard is only deterministic when applied to the end of
a 'sequence' - determinism being particularly important when generating
messages from a schema definition. Again it needs saying that tools 
should support the 'namespace' attribute including the '##any', 
'##other' and '#
</edtext></ednote>

	<ednote>
	  <edtext>Add Dare Obasanjo's pattern for subverting greedy 'any'.</edtext>
	</ednote>
      </div2>

      <div2 id="Vector">
	<head>Vectors</head>
	<p>

A vector is an ordered sequence of items of the same data type. This is
a very common construct in programming languages appearing as an array or
list. Multi-dimensional arrays may be built by composing vectors within
vectors.  Formalising more complex constructs such as sparse or jagged
matrices are beyond the scope of these examples.
</p>

	<example id="eg-wrapped-vector">
	  <head>Wrapped Vector</head>
	  <eg xml:space="preserve"><![CDATA[
<xsd:complexType name="ItemList">
  <xsd:sequence>
    <xsd:element name="item" type="xsd:string" minOccurs=0 maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
]]></eg>
	</example>

	<example id="eg-bare-vectors">
	  <head>Bare Vector</head>
	  <eg xml:space="preserve"><![CDATA[
 <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="lines" type="xs:string" maxOccurs="unbounded"/>
      <xs:element name="telnos" type="xs:string" maxOccurs="unbounded"/>
    <xs:sequence>
  </xs:complexType>
]]></eg>
	</example>

      </div2>

      <div2 id="Maps">
	<head>Maps</head>
	<p></p>
<ednote><edtext>
xs:ID is similar to the DTD ID type with the following properties:

   - the type has the same lexical space as xs:NCName
   - the ID may be an attribute or an element
   - the ID value must be unique with the document
   - there may be one or more ID's associated with an element

</edtext></ednote>
<ednote><edtext>
The PSVI set contains a ID/IDREF table[7] which is an index pointing
to nodes with an included xs:ID element/attribute.
</edtext></ednote>

<ednote><edtext>
The new xml:id[8] attribute from the XML Base WG offers an neat way of
expressing an ID value for an element targeted at recipients who may not
have access to a schema. A so called 'disengaged' agent may easily more
recognise a map from a document containing xml:id attributes and present 
the repeated element as an associative array, e.g:
</edtext></ednote>

	<example id="eg-map-xml-id">
	  <head>Map Keyed Using xml:id</head>
	  <eg xml:space="preserve"><![CDATA[
<xs:schema targetNamespace="http://www.w3.org/1998/XML/Namespace">
 <xs:attribute name="id" type="xs:ID"/>
</xs:schema>

<xs:schema targetNamespace="http://www.openuri.org/">
 <xs:import namespace="http://www.w3.org/XML/1998/namespace"/>

 <xs:complexType name="ProductType">
   <xs:sequence>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="price" type="xs:string"/>
   </xs:sequence>
   <xs:attribute ref="xml:id" use="required" />
 </xs:complexType>
  
</xs:schema>
]]></eg>
	</example>

<ednote><edtext>
The xs:unique provides a means of expressing that an element or attribute
value is unique within a specified set of elements. A selector XPath
expression defines the set of elements and attributes which constitute 
the context, a second field XPath expression identifies an element or
attribute which must be unique within the context, e.g.:
</edtext></ednote>

	<example id="eg-map-unique">
	  <head>Map Keyed Using xs:unique</head>
	  <eg xml:space="preserve"><![CDATA[
<xs:element name="products">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="product" type="ProductType" 
	     maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:unique name="product">
    <xs:selector xpath="product"/>
    <xs:field xpath="@id"/>
  </xs:unique>

</xs:element>

<xs:complexType name="ProductType">
  <xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="price" type="xs:string"/>
  </xs:sequence>
  <xs:attribute name="id" type="xs:string" />
</xs:complexType>
]]></eg>
	</example>

  <ednote>
    <edtext>xs:key is very similar to xs:unique, but adds a constaint that all 
nodes corresponding to all fields have to be present. Key has been 
designed for use with xs:keyref - similar to ID/IDREF in DTD with 
the difference that the uniqueness is within a XPath defined scope. 
xs:key is therefore preferable to xs:unique when describing a key.</edtext></ednote>

<ednote><edtext>
- ID is an NCName datatype. A raw number such as an ISBN such as
     "0123456789" could be represented as "isbn_0123456789", more
     complex types such as a Java object will require a hashed key
     value.
- ID is an NCName datatype. A raw number such as an ISBN such as

   - ID has to be unique within the entire document. A context specific
     prefix could added to the front of each key.

   - there may be more than one ID, xs:unique or xs:key value for
     a repeated element. Rules as to which element/attribute should be
     used as the primary key could be provided, or be left undefined.

   - ID's are presented in the PSVI ID/IDREF table. May assist processing.

   - xs:unique and xs:key are more explicit in which containing elements
     form the map.

   - xs:unique and xs:key allow multiple fields to form a composite key

   - xs:unique and xs:key are complex and not well supported by current
     implementations

   - not all schema languages have a means of expressing a uniqueness
     constraint. xs:unique and xs:key don't map well to Relax NG.
</edtext></ednote>

<ednote><edtext>
I'd suggest using the simple xml:id as a good mechanism for generating 
a map from code with the caveats on the key having to be NCName as well
as document wide unique.

I suggest we offer xml:id, xs:ID, xs:unique and xs:key as patterns for
recognising a map when binding schema to code.
</edtext></ednote>

      </div2>




    </div1>
    <div1 id="normative-references">
      <head>Normative References</head>
      <blist>
        <bibl id="XMLSchemaP1" key="XML Schema: Structures"
          href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
          <titleref>XML Schema Part 1: Structures Second Edition</titleref>, H. Thompson, D. Beech,
          M. Maloney, and N. Mendelsohn, Editors. World Wide Web Consortium Recommendation, 28
          October 2004. </bibl>
        <bibl key="XML Schema: Datatypes" id="XMLSchemaP2"
          href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
          <titleref>XML Schema Part 2: Datatypes Second Edition</titleref>, P. Byron and A.
          Malhotra, Editors. World Wide Web Consortium Recommendation, 28 October 2004. </bibl>
        <bibl id="XMLInfoSet" key="XML Information Set"
          href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">
          <titleref>XML Information Set (Second Edition)</titleref>, J. Cowan and R. Tobin, World
          Wide Web Consortium Recommendation, 4 February 2004. </bibl>
        <bibl key="IETF RFC 3986" id="rfc3986" href="http://www.ietf.org/rfc/rfc3986.txt">
          <titleref>Uniform Resource Identifiers (URI): Generic Syntax</titleref>, T. Berners-Lee,
          R. Fielding, L. Masinter, January 2005. </bibl>
        <bibl id="rfc2119" key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt">
          <titleref>Key words for use in RFCs to Indicate Requirement Levels</titleref>, S. Bradner,
          Author. Internet Engineering Task Force, June 1999. </bibl>
      </blist>
    </div1>
    <div1 id="informative-references">
      <head>Informative References</head>
      <blist>
        <bibl key="XML Schema: Primer" id="XMLSchemaP0"
          href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/">
          <titleref>XML Schema Part 0: Primer Second Edition</titleref>, David C. Fallside,
          Priscilla Walmsley, Editors. World Wide Web Consortium Recommendation, 28 October 2004. </bibl>
        <bibl key="WSDL: Primer" id="WSDLPrimer"
          href="http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/wsdl20-primer.html?content-type=text/html;%20charset=utf-8">
          <titleref>Web Services Description Language (WSDL) Version 2.0 Part 0: Primer</titleref>,
          David Booth, Canyang Kevin Liu, Editors. World Wide Web Consortium Editors' copy, June
          2005. </bibl>
      </blist>
    </div1>
  </body>
  <back>
    <div1 id="ack">
      <head>Acknowledgements</head>
      <p>This document has been developed by participants of the <loc
          href="http://www.w3.org/2002/ws/desc/">Web Services Description</loc> Working Group. </p>
    </div1>
  </back>
</spec>

--- NEW FILE: xmlspec-wsdl.xsl ---
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">
  <xsl:import href="xmlspec.xsl"/>

  <xsl:output method="html"
       encoding="utf-8"
       doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
       doctype-system="http://www.w3.org/TR/html4/loose.dtd"
       indent="no"/>
  
  <!-- bibref: reference to a bibliographic entry -->
  <!-- make a link to the bibl -->
  <!-- if the bibl has a key, put it in square brackets; otherwise use
       the bibl's ID -->
  <!-- Umit's note it appears that this is already accounted for
  <xsl:template match="bibref">
    <xsl:text>[</xsl:text>
    <cite><a>
      <xsl:attribute name="href">
        <xsl:call-template name="href.target">
          <xsl:with-param name="target" select="id(@ref)"/>
        </xsl:call-template>
      </xsl:attribute>
      <xsl:choose>
        <xsl:when test="id(@ref)/@key">
          <xsl:value-of select="id(@ref)/@key"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="@ref"/>
        </xsl:otherwise>
      </xsl:choose>
    </a></cite>
    <xsl:text>]</xsl:text>
  </xsl:template>

 
  <xsl:template match="bibl">
    <dt class="label">
      <xsl:attribute name="class">
	<xsl:choose>
	  <xsl:when test="@diff and $show.diff.markup != 0">
	    <xsl:text>diff-</xsl:text>
	    <xsl:value-of select="@diff"/>
	  </xsl:when>
	  <xsl:otherwise>
  	    <xsl:text>label</xsl:text>
	  </xsl:otherwise>
	</xsl:choose>
      </xsl:attribute>
      <xsl:if test="@id">
	<a name="{@id}"/>
      </xsl:if>
      <xsl:text>[</xsl:text>
      <xsl:choose>
	<xsl:when test="@key">
	  <xsl:value-of select="@key"/>
	</xsl:when>
	<xsl:otherwise>
	  <xsl:value-of select="@id"/>
	</xsl:otherwise>
      </xsl:choose>
      <xsl:text>] </xsl:text>
    </dt>
    <dd>
      <xsl:if test="@diff and $show.diff.markup != 0">
	<xsl:attribute name="class">
  	  <xsl:text>diff-</xsl:text>
  	  <xsl:value-of select="@diff"/>
	</xsl:attribute>
      </xsl:if>
      <xsl:apply-templates/>
      <xsl:if test="not(titleref) and @href">
        <xsl:text>  (See </xsl:text>
        <cite>
	  <a href="{@href}">
	    <xsl:value-of select="@href"/>
	  </a>
	</cite>
        <xsl:text>.)</xsl:text>
      </xsl:if>
    </dd>
  </xsl:template>

  <xsl:template match="titleref">
    <xsl:choose>
      <xsl:when test="../@href">
	<cite>
	  <a href="{../@href}">
            <xsl:apply-templates/>
	  </a>
	</cite>
      </xsl:when>
      <xsl:otherwise>
        <cite>
          <xsl:apply-templates/>
        </cite>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 -->
  <xsl:template match="b">
    <b>
      <xsl:apply-templates/>
    </b>
  </xsl:template>

  <xsl:template match="u">
    <u>
      <xsl:apply-templates/>
    </u>
  </xsl:template>
  <xsl:template match="i">
    <i>
      <xsl:apply-templates/>
    </i>
  </xsl:template>

  <xsl:template match="redc">
     <span style='color:red'>
        <xsl:apply-templates/>
     </span>
  </xsl:template>

 <xsl:template match="bluec">
     <span style='color:blue'>
        <xsl:apply-templates/>
     </span>
  </xsl:template>

</xsl:stylesheet>

--- NEW FILE: entities.dtd ---
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % sub.entities SYSTEM "entitiesedcopy.dtd">

%sub.entities;

<!-- misc entities -->
<!ENTITY BEII "<emph>binary element information item</emph>">
<!ENTITY EII "<emph>element information item</emph>">
<!ENTITY AII "<emph>attribute information item</emph>">
<!ENTITY xmlmimens "http://www.w3.org/&draft.year;/&draft.mm;/xmlmime">
<!ENTITY wsdlns "http://www.w3.org/2004/03/wsdl">
<!ENTITY Umit "&#x000DC;mit Yal&#x000E7;&#x00131;nalp">

--- NEW FILE: xmlspec.xsl ---
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" exclude-result-prefixes="saxon" version="1.0">

<!-- ====================================================================== -->
<!-- xmlspec.xsl: An HTML XSL[1] Stylesheet for XML Spec V2.1[2] markup

     Version: $Id: xmlspec.xsl,v 1.1 2005/07/01 15:27:25 pdowney Exp $

     URI:     http://dev.w3.org/cvsweb/spec-prod/html/xmlspec.xsl

     Authors: Norman Walsh (norman.walsh@sun.com)
              Chris Maden (crism@lexica.net)
              Ben Trafford (ben@legendary.org)
              Eve Maler (eve.maler@sun.com)
              Henry S. Thompson (ht@cogsci.ed.ac.uk)

     Date:    Created 07 September 1999
              Last updated $Date: 2005/07/01 15:27:25 $ by $Author: pdowney $

[...2710 lines suppressed...]

<xsl:template name="anchor">
  <xsl:param name="node" select="."/>
  <xsl:param name="conditional" select="1"/>
  <xsl:param name="default.id" select="''"/>

  <xsl:variable name="id">
    <xsl:call-template name="object.id">
      <xsl:with-param name="node" select="$node"/>
      <xsl:with-param name="default.id" select="$default.id"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:if test="$conditional = 0 or $node/@id">
    <a name="{$id}" id="{$id}"/>
  </xsl:if>
</xsl:template>

<!-- ================================================================= -->

</xsl:transform>

--- NEW FILE: xmlspec.dtd ---
<!-- ............................................................... -->
<!-- XML specification DTD ......................................... -->
<!-- ............................................................... -->

<!-- $Id: xmlspec.dtd,v 1.1 2005/07/01 15:27:25 pdowney Exp $ -->

<!--
TYPICAL INVOCATION:
#  <!DOCTYPE spec PUBLIC
#       "-//W3C//DTD Specification V2.7//EN"
#       "http://www.w3.org/2002/xmlspec/dtd/2.7/xmlspec.dtd">

PURPOSE:
  This XML DTD is for W3C specifications and other technical reports.
  It is based in part on the TEI Lite and Sweb DTDs.

COPYRIGHT:

  Copyright (C) 2000, 2001, 2002, 2003 Sun Microsystems, Inc. All Rights Reserved.
[...2731 lines suppressed...]
#- Added headstyle attribute to scrap.
#2000-03-07: maler
#- Added proto element, its arg subelement, and the %argtypes; entity.
#- Added function, var, sub, sup, phrase, el, att, attval elements.
#- Expanded emph to %p.pcd.mix;.
#- Allowed status and abstract to appear in the opposite order.
#- Updated XLink usage to the latest WD, except for href and source.
#- Removed the xml:attributes attribute from graphic.
#- Added %local.graphic.att; to graphic.
#- Added common diff attribute.
#- Added div5 element.
#- Broadened content models of publoc, prevlocs, and latestloc.
#- Added head, source, resolution, and status attribute to issue.
#- Added cr, issues, and dispcmts to w3c-doctype attribute on spec.
#- Added example element.
-->

<!-- ............................................................... -->
<!-- End of XML specification DTD .................................. -->
<!-- ............................................................... -->

--- NEW FILE: xml-schema-patterns.html ---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta name="generator" content=
"HTML Tidy for Mac OS X (vers 12 April 2005), see www.w3.org" />
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8" />
<title>XML Schema Patterns for Common Data Structures</title>

<style type="text/css">
/*<![CDATA[*/
code           { font-family: monospace; }

div.constraint,
div.issue,
div.note,
div.notice     { margin-left: 2em; }

ol.enumar      { list-style-type: decimal; }
ol.enumla      { list-style-type: lower-alpha; }
ol.enumlr      { list-style-type: lower-roman; }
ol.enumua      { list-style-type: upper-alpha; }
ol.enumur      { list-style-type: upper-roman; }


div.exampleInner pre { margin-left: 1em;
                       margin-top: 0em; margin-bottom: 0em}
div.exampleOuter {border: 4px double gray;
                  margin: 0em; padding: 0em}
div.exampleInner { background-color: #d5dee3;
                   border-top-width: 4px;
                   border-top-style: double;
                   border-top-color: #d3d3d3;
                   border-bottom-width: 4px;
                   border-bottom-style: double;
                   border-bottom-color: #d3d3d3;
                   padding: 4px; margin: 0em }
div.exampleWrapper { margin: 4px }
div.exampleHeader { font-weight: bold;
                    margin: 4px}
/*]]>*/
</style>
<link rel="stylesheet" type="text/css" href=
"http://www.w3.org/StyleSheets/TR/base.css" />
</head>
<body>
<div class="head">
<h1><a name="title" id="title"></a>XML Schema Patterns for Common
Data Structures</h1>
<h2><a name="w3c-doctype" id="w3c-doctype"></a>W3C Working Group
Note @@ @@@@ @@@@</h2>
<dl>
<dt>This version:</dt>
<dd><a href=
"http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-pattersn.html">
http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-patterns.html</a></dd>
<dt>Latest version:</dt>
<dd><a href=
"http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/xml-schema-pattersn.html?content-type=text/html;%20charset=utf-8">
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/xml-schema-patterns.html</a></dd>
<dt>Previous version:</dt>
<dd><a href=
"http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-pattersn.html">
http://dev.w3.org/cvsweb/2002/ws/desc/wsdl20/xml-schema-patterns.html</a></dd>
<dt>Editor:</dt>
<dd>Paul Downey, BT</dd>
</dl>
<p class="copyright"><a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>&nbsp;©&nbsp;@@@@&nbsp;<a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><acronym title=
"Massachusetts Institute of Technology">MIT</acronym></a>, <a href=
"http://www.ercim.org/"><acronym title=
"European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
W3C <a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
and <a href=
"http://www.w3.org/Consortium/Legal/copyright-documents">document
use</a> rules apply.</p>
</div>
<hr />
<div>
<h2><a name="abstract" id="abstract"></a>Abstract</h2>
<p>This document provides a set of simple XML Schema 1.0 patterns
for describing commonly used data structures. The data structures
described are intended to be independent of any particular
programming language or database or modelling environment.</p>
<p>Authors of tools which map or bind data structures to XML may
find these simple patterns useful in facilitating the mapping of
commonplace constructs to and from XML.</p>
<p>Authors of XML Schema 1.0 documents may also find these patterns
useful in providing a good user experience for consumers using data
mapping and binding tools.</p>
</div>
<div>
<h2><a name="status" id="status"></a>Status of this Document</h2>
<p><strong>This document is an editors' copy that has no official
standing.</strong></p>
<p><em>The intention is that this document will be published as a
Web Services Description Working Group Note, although the Working
Group has show interest in this work taking place, the Working
Group has yet to review or approve this document.</em></p>
</div>
<div class="toc">
<h2><a name="contents" id="contents"></a>Table of Contents</h2>
<p class="toc">1 <a href="#introduction">Introduction</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;1.1 <a href="#notational">Notational
Conventions</a><br />
2 <a href="#Data-Structures">Common Data Structures</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;2.1 <a href="#Enumerated">Enumerated
Types</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;2.2 <a href=
"#Collection">Collections</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;2.3 <a href="#Vector">Vectors</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;2.4 <a href="#Maps">Maps</a><br />
3 <a href="#normative-references">Normative References</a><br />
4 <a href="#informative-references">Informative
References</a><br /></p>
<h3><a name="appendices" id="appendices"></a>Appendix</h3>
<p class="toc">A <a href="#ack">Acknowledgements</a><br /></p>
</div>
<hr />
<div class="body">
<div class="div1">
<h2><a name="introduction" id="introduction"></a>1
Introduction</h2>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">Explanation of how schema
may be used as a description language, as well as for validation.
Reference to WSDL which uses XML Schema for such a purpose</td>
</tr>
</table>
<div class="div2">
<h3><a name="notational" id="notational"></a>1.1 Notational
Conventions</h3>
<p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
in this document are to be interpreted as described in <a href=
"#rfc2119">[IETF RFC 2119]</a>.</p>
<p>This specification uses properties from the XML Information Set
(see <a href="#XMLInfoSet">[XML Information Set]</a>). Such
properties are denoted by square brackets, e.g. [namespace
name].</p>
<p>This specification uses namespace prefixes that are listed in
Table 1. Note that the choice of any namespace prefix is arbitrary
and not semantically significant (see <a href="#XMLInfoSet">[XML
Information Set]</a>).</p>
<a name="tabnsprefixes" id="tabnsprefixes"></a>
<table border="1" summary=
"Mapping of prefixes used in this document to their associated namespace name">
<caption>Table 1. Prefixes and Namespaces used in this
specification</caption>
<tbody>
<tr>
<th>Prefix</th>
<th>Namespace</th>
<th>Definition</th>
</tr>
<tr>
<td>xs</td>
<td>"http://www.w3.org/2001/XMLSchema"</td>
<td>Defined in the W3C XML Schema specifications <a href=
"#XMLSchemaP1">[XML Schema: Structures]</a>, <a href=
"#XMLSchemaP2">[XML Schema: Datatypes]</a>.</td>
</tr>
<tr>
<td>xsi</td>
<td>"http://www.w3.org/2001/XMLSchema-instance"</td>
<td>Defined in the W3C XML Schema specification <a href=
"#XMLSchemaP1">[XML Schema: Structures]</a>.</td>
</tr>
</tbody>
</table>
<p>Namespace names of the general form "http://example.org/..." and
"http://example.com/..." represent application or context-dependent
URIs (see <a href="#rfc3986">[IETF RFC 3986]</a>).</p>
<p>All parts of this specification are normative, with the
exception of examples and sections explicitly marked as
"Non-Normative".</p>
</div>
</div>
<div class="div1">
<h2><a name="Data-Structures" id="Data-Structures"></a>2 Common
Data Structures</h2>
<div class="div2">
<h3><a name="Enumerated" id="Enumerated"></a>2.1 Enumerated
Types</h3>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-closed-enum" id=
"eg-closed-enum"></a>Example 1: Closed Enumerated Type</div>
<div class="exampleInner">
<pre>
&lt;xs:simpleType name='Beatle' &gt;
  &lt;xs:restriction base='xs:string' &gt;
   &lt;xs:enumeration value='John' /&gt;
   &lt;xs:enumeration value='Paul /&gt;
   &lt;xs:enumeration value='George' /&gt;
   &lt;xs:enumeration value='Stuart' /&gt;
   &lt;xs:enumeration value='Pete' /&gt;
   &lt;xs:enumeration value='Ringo' /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
</pre></div>
</div>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-open-enum" id=
"eg-open-enum"></a>Example 2: Open Enumerated Type</div>
<div class="exampleInner">
<pre>
&lt;xs:simpleType name='Fruit' &gt;
  &lt;xs:restriction base='xs:string' &gt;
   &lt;xs:enumeration value='Apple' /&gt;
   &lt;xs:enumeration value='Pear' /&gt;
   &lt;xs:enumeration value='Banana' /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name='Pudding' &gt;
  &lt;xs:union memberTypes='tns:Fruit  xs:string' /&gt;
&lt;/xs:simpleType&gt;
</pre></div>
</div>
</div>
<div class="div2">
<h3><a name="Collection" id="Collection"></a>2.2 Collections</h3>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">A collection of data
items (an object, class, structure, record etc) is best represented
as a complexType with the individual items as elements and/or
attributes. Sadly it needs saying that the compositors "sequence",
"all" *and* "choice" should be supported.</td>
</tr>
</table>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-simple-collection" id=
"eg-simple-collection"></a>Example 3: Simple Collection</div>
<div class="exampleInner">
<pre>
&lt;xs:complexType name="ProductType"&gt;
  &lt;xs:sequence&gt;
    &lt;xs:element name="name" type="xs:string"/&gt;
    &lt;xs:element name="colour" type="xs:string"/&gt;
  &lt;/xs:sequence&gt;
  &lt;xs:attribute name="id" type="xs:string" /&gt;
&lt;/xs:complexType&gt;
</pre></div>
</div>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">Explicit (active)
extensibility of a collection may be expressed using 'any' and
'anyAttribute' as in the following example adapted from the draft
TAG finding on extensibility and versioning[2]:</td>
</tr>
</table>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-extended-collection" id=
"eg-extended-collection"></a>Example 4: Extending a
Collection</div>
<div class="exampleInner">
<pre>
 &lt;xs:complexType name="ProductType"&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name="name" type="xs:string"
          minOccurs="1" maxOccurs="1"/&gt;
      &lt;xs:element name="colour" type="xs:string"/&gt;
      &lt;xs:any processContents="lax"
            minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute name="id" type="xs:string" /&gt;
   &lt;xs:anyAttribute/&gt;
 &lt;/xs:complexType&gt;
</pre></div>
</div>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">The 'any' wildcard is
only deterministic when applied to the end of a 'sequence' -
determinism being particularly important when generating messages
from a schema definition. Again it needs saying that tools should
support the 'namespace' attribute including the '##any', '##other'
and '#</td>
</tr>
</table>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">Add Dare Obasanjo's
pattern for subverting greedy 'any'.</td>
</tr>
</table>
</div>
<div class="div2">
<h3><a name="Vector" id="Vector"></a>2.3 Vectors</h3>
<p>A vector is an ordered sequence of items of the same data type.
This is a very common construct in programming languages appearing
as an array or list. Multi-dimensional arrays may be built by
composing vectors within vectors. Formalising more complex
constructs such as sparse or jagged matrices are beyond the scope
of these examples.</p>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-wrapped-vector" id=
"eg-wrapped-vector"></a>Example 5: Wrapped Vector</div>
<div class="exampleInner">
<pre>
&lt;xsd:complexType name="ItemList"&gt;
  &lt;xsd:sequence&gt;
    &lt;xsd:element name="item" type="xsd:string" minOccurs=0 maxOccurs="unbounded"/&gt;
    &lt;/xsd:sequence&gt;
&lt;/xsd:complexType&gt;
</pre></div>
</div>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-bare-vectors" id=
"eg-bare-vectors"></a>Example 6: Bare Vector</div>
<div class="exampleInner">
<pre>
 &lt;xs:complexType name="Address"&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name="lines" type="xs:string" maxOccurs="unbounded"/&gt;
      &lt;xs:element name="telnos" type="xs:string" maxOccurs="unbounded"/&gt;
    &lt;xs:sequence&gt;
  &lt;/xs:complexType&gt;
</pre></div>
</div>
</div>
<div class="div2">
<h3><a name="Maps" id="Maps"></a>2.4 Maps</h3>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">xs:ID is similar to the
DTD ID type with the following properties: - the type has the same
lexical space as xs:NCName - the ID may be an attribute or an
element - the ID value must be unique with the document - there may
be one or more ID's associated with an element</td>
</tr>
</table>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">The PSVI set contains a
ID/IDREF table[7] which is an index pointing to nodes with an
included xs:ID element/attribute.</td>
</tr>
</table>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">The new xml:id[8]
attribute from the XML Base WG offers an neat way of expressing an
ID value for an element targeted at recipients who may not have
access to a schema. A so called 'disengaged' agent may easily more
recognise a map from a document containing xml:id attributes and
present the repeated element as an associative array, e.g:</td>
</tr>
</table>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-map-xml-id" id=
"eg-map-xml-id"></a>Example 7: Map Keyed Using xml:id</div>
<div class="exampleInner">
<pre>
&lt;xs:schema targetNamespace="http://www.w3.org/1998/XML/Namespace"&gt;
 &lt;xs:attribute name="id" type="xs:ID"/&gt;
&lt;/xs:schema&gt;

&lt;xs:schema targetNamespace="http://www.openuri.org/"&gt;
 &lt;xs:import namespace="http://www.w3.org/XML/1998/namespace"/&gt;

 &lt;xs:complexType name="ProductType"&gt;
   &lt;xs:sequence&gt;
     &lt;xs:element name="name" type="xs:string"/&gt;
     &lt;xs:element name="price" type="xs:string"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="xml:id" use="required" /&gt;
 &lt;/xs:complexType&gt;
  
&lt;/xs:schema&gt;
</pre></div>
</div>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">The xs:unique provides a
means of expressing that an element or attribute value is unique
within a specified set of elements. A selector XPath expression
defines the set of elements and attributes which constitute the
context, a second field XPath expression identifies an element or
attribute which must be unique within the context, e.g.:</td>
</tr>
</table>
<div class="exampleOuter">
<div class="exampleHeader"><a name="eg-map-unique" id=
"eg-map-unique"></a>Example 8: Map Keyed Using xs:unique</div>
<div class="exampleInner">
<pre>
&lt;xs:element name="products"&gt;
  &lt;xs:complexType&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name="product" type="ProductType" 
             maxOccurs="unbounded"/&gt;
    &lt;/xs:sequence&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:unique name="product"&gt;
    &lt;xs:selector xpath="product"/&gt;
    &lt;xs:field xpath="@id"/&gt;
  &lt;/xs:unique&gt;

&lt;/xs:element&gt;

&lt;xs:complexType name="ProductType"&gt;
  &lt;xs:sequence&gt;
    &lt;xs:element name="name" type="xs:string"/&gt;
    &lt;xs:element name="price" type="xs:string"/&gt;
  &lt;/xs:sequence&gt;
  &lt;xs:attribute name="id" type="xs:string" /&gt;
&lt;/xs:complexType&gt;
</pre></div>
</div>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">xs:key is very similar to
xs:unique, but adds a constaint that all nodes corresponding to all
fields have to be present. Key has been designed for use with
xs:keyref - similar to ID/IDREF in DTD with the difference that the
uniqueness is within a XPath defined scope. xs:key is therefore
preferable to xs:unique when describing a key.</td>
</tr>
</table>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">- ID is an NCName
datatype. A raw number such as an ISBN such as "0123456789" could
be represented as "isbn_0123456789", more complex types such as a
Java object will require a hashed key value. - ID is an NCName
datatype. A raw number such as an ISBN such as - ID has to be
unique within the entire document. A context specific prefix could
added to the front of each key. - there may be more than one ID,
xs:unique or xs:key value for a repeated element. Rules as to which
element/attribute should be used as the primary key could be
provided, or be left undefined. - ID's are presented in the PSVI
ID/IDREF table. May assist processing. - xs:unique and xs:key are
more explicit in which containing elements form the map. -
xs:unique and xs:key allow multiple fields to form a composite key
- xs:unique and xs:key are complex and not well supported by
current implementations - not all schema languages have a means of
expressing a uniqueness constraint. xs:unique and xs:key don't map
well to Relax NG.</td>
</tr>
</table>
<table border="1" summary="Editorial note">
<tr>
<td align="left" valign="top" width="50%"><b>Editorial
note</b></td>
<td align="right" valign="top" width="50%">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="left" valign="top">I'd suggest using the
simple xml:id as a good mechanism for generating a map from code
with the caveats on the key having to be NCName as well as document
wide unique. I suggest we offer xml:id, xs:ID, xs:unique and xs:key
as patterns for recognising a map when binding schema to code.</td>
</tr>
</table>
</div>
</div>
<div class="div1">
<h2><a name="normative-references" id="normative-references"></a>3
Normative References</h2>
<dl>
<dt class="label"><a name="XMLSchemaP1" id="XMLSchemaP1"></a>XML
Schema: Structures</dt>
<dd><a href=
"http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/"><cite>XML
Schema Part 1: Structures Second Edition</cite></a>, H. Thompson,
D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web
Consortium Recommendation, 28 October 2004. (See
http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/.)</dd>
<dt class="label"><a name="XMLSchemaP2" id="XMLSchemaP2"></a>XML
Schema: Datatypes</dt>
<dd><a href=
"http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/"><cite>XML
Schema Part 2: Datatypes Second Edition</cite></a>, P. Byron and A.
Malhotra, Editors. World Wide Web Consortium Recommendation, 28
October 2004. (See
http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/.)</dd>
<dt class="label"><a name="XMLInfoSet" id="XMLInfoSet"></a>XML
Information Set</dt>
<dd><a href=
"http://www.w3.org/TR/2001/REC-xml-infoset-20011024/"><cite>XML
Information Set (Second Edition)</cite></a>, J. Cowan and R. Tobin,
World Wide Web Consortium Recommendation, 4 February 2004. (See
http://www.w3.org/TR/2001/REC-xml-infoset-20011024/.)</dd>
<dt class="label"><a name="rfc3986" id="rfc3986"></a>IETF RFC
3986</dt>
<dd><a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform
Resource Identifiers (URI): Generic Syntax</cite></a>, T.
Berners-Lee, R. Fielding, L. Masinter, January 2005. (See
http://www.ietf.org/rfc/rfc3986.txt.)</dd>
<dt class="label"><a name="rfc2119" id="rfc2119"></a>IETF RFC
2119</dt>
<dd><a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words
for use in RFCs to Indicate Requirement Levels</cite></a>, S.
Bradner, Author. Internet Engineering Task Force, June 1999. (See
http://www.ietf.org/rfc/rfc2119.txt.)</dd>
</dl>
</div>
<div class="div1">
<h2><a name="informative-references" id=
"informative-references"></a>4 Informative References</h2>
<dl>
<dt class="label"><a name="XMLSchemaP0" id="XMLSchemaP0"></a>XML
Schema: Primer</dt>
<dd><a href=
"http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/"><cite>XML
Schema Part 0: Primer Second Edition</cite></a>, David C. Fallside,
Priscilla Walmsley, Editors. World Wide Web Consortium
Recommendation, 28 October 2004. (See
http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/.)</dd>
<dt class="label"><a name="WSDLPrimer" id="WSDLPrimer"></a>WSDL:
Primer</dt>
<dd><a href=
"http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/wsdl20-primer.html?content-type=text/html;%20charset=utf-8">
<cite>Web Services Description Language (WSDL) Version 2.0 Part 0:
Primer</cite></a>, David Booth, Canyang Kevin Liu, Editors. World
Wide Web Consortium Editors' copy, June 2005. (See
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/wsdl20-primer.html?content-type=text/html;%20charset=utf-8.)</dd>
</dl>
</div>
</div>
<div class="back">
<div class="div1">
<h2><a name="ack" id="ack"></a>A Acknowledgements</h2>
<p>This document has been developed by participants of the <a href=
"http://www.w3.org/2002/ws/desc/">Web Services Description</a>
Working Group.</p>
</div>
</div>
</body>
</html>

--- NEW FILE: entitiesedcopy.dtd ---
<?xml version='1.0' encoding='ISO-8859-1' ?>

<!--
  Date parameters
  ** DO NOT CHANGE **
  for publication, change them in entitieswd.dtd
  -->
<!ENTITY draft.year "@@@@">
<!ENTITY draft.month "@@@@">
<!ENTITY draft.mm "@@">
<!ENTITY draft.day "@@">
<!ENTITY draft.dd "@@">

<!-- Don't touch after this line -->

<!ENTITY draft.date "&draft.year;&draft.mm;&draft.dd;">

<!ENTITY w3c.tr.latest  "http://www.w3.org/TR">	

<!ENTITY w3c.tr  "&w3c.tr.latest;/&draft.year;">	

<!ENTITY draft.date "&draft.year;&draft.mm;">

<!ENTITY document.role "editors-copy">

<!ENTITY document.status "W3C Working Group Note">

<!ENTITY xmlxschemapatterns.prefix "xml-schema-patterns">

<!ENTITY w3c.tr.latest  "http://www.w3.org/TR">	

<!ENTITY w3c-designation-xmlxschemapatterns
  "&w3c.tr.latest;/&draft.year;/WD-&xmlxschemapatterns.prefix;-&draft.date;">

<!ENTITY altlocs
    "<altlocs>
	<loc role='postscript' href='&prefix;.ps'>postscript</loc>
	<loc role='pdf' href='&prefix;.pdf'>PDF</loc>
	<loc role='xml' href='&prefix;.xml'>XML</loc>
	<loc role='plain' href='&prefix;.txt'>plain text</loc>
    </altlocs>">

Received on Friday, 1 July 2005 15:27:37 UTC