Draft. See "Content Assembly Mechanism (CAM) Specifications and Description Document." Edited by David Webber. Draft Version 1.0. Produced by the OASIS Content Assembly Mechanism Technical Committee. 69 pages. ZIP file contains the schema and DTD.


<?xml version="1.0" encoding="UTF-8"?>
<!-- CAM structure for OASIS CAM. February 12th, 2003
Modification history:
1.00 Initial
Copyright (c) 2003 OASIS. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that such redistributions retain
this copyright notice.
This CAM structure is provided "as is" and there are no
expressed or implied warranties.
In no event shall OASIS be liable for any
damages arising out of the use of this structure.  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:element name="Addressing">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="registry" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="AssemblyStructure">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Header"/>
				<xs:element ref="Declaration" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="Structure" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="BusinessUseContext">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Rules"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CAM">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="AssemblyStructure"/>
				<xs:element ref="BusinessUseContext" minOccurs="0"/>
				<xs:element ref="ContentReference" minOccurs="0"/>
				<xs:element ref="DataValidations" minOccurs="0"/>
				<xs:element ref="ExternalMapping" minOccurs="0"/>
				<xs:element ref="annotation" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CAMlevel">
		<xs:complexType>
			<xs:attribute name="value" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="1"/>
						<xs:enumeration value="2"/>
						<xs:enumeration value="3"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Conditions">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="conditional" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="condition" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ContentAssociation">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Description" minOccurs="0"/>
				<xs:element ref="InputSource"/>
				<xs:element ref="OutputStore"/>
				<xs:element ref="RulesSet"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ContentReference">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Addressing"/>
				<xs:element ref="item" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="DataValidations">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Conditions" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="DateTime" type="xs:string"/>
	<xs:element name="Declaration">
		<xs:complexType>
			<xs:attribute name="parameter" type="xs:string" use="required"/>
			<xs:attribute name="values" type="xs:string"/>
			<xs:attribute name="default" type="xs:string"/>
			<xs:attribute name="datatype" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Description" type="xs:string"/>
	<xs:element name="ExternalMapping">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ContentAssociation" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Header">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CAMlevel"/>
				<xs:element ref="Description" minOccurs="0"/>
				<xs:element ref="Owner" minOccurs="0"/>
				<xs:element ref="Version" minOccurs="0"/>
				<xs:element ref="DateTime"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="InputSource">
		<xs:complexType>
			<xs:attribute name="type">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="SQL"/>
						<xs:enumeration value="XML"/>
						<xs:enumeration value="EDI"/>
						<xs:enumeration value="TXT"/>
						<xs:enumeration value="ODBC"/>
						<xs:enumeration value="OTHER"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="location" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="MapRule">
		<xs:complexType>
			<xs:attribute name="output" type="xs:string" use="required"/>
			<xs:attribute name="input" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="OutputStore">
		<xs:complexType>
			<xs:attribute name="type">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="SQL"/>
						<xs:enumeration value="XML"/>
						<xs:enumeration value="EDI"/>
						<xs:enumeration value="TXT"/>
						<xs:enumeration value="ODBC"/>
						<xs:enumeration value="OTHER"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="location" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Owner" type="xs:string"/>
	<xs:element name="Rules">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="default" minOccurs="0"/>
				<xs:element ref="context" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="RulesSet">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="MapRule" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Structure">
		<xs:complexType mixed="true">
			<xs:attribute name="ID" type="xs:string"/>
			<xs:attribute name="reference" type="xs:string"/>
			<xs:attribute name="taxonomy" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="UID"/>
						<xs:enumeration value="XSD"/>
						<xs:enumeration value="DTD"/>
						<xs:enumeration value="RNG"/>
						<xs:enumeration value="XML"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="Version" type="xs:string"/>
	<xs:element name="annotation">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="documentation" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="conditional">
		<xs:complexType>
			<xs:attribute name="expression" type="xs:string" use="required"/>
			<xs:attribute name="syntax">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="XPath"/>
						<xs:enumeration value="JavaScript"/>
						<xs:enumeration value="VB"/>
						<xs:enumeration value="Perl"/>
						<xs:enumeration value="Other"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="outcome" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="fail"/>
						<xs:enumeration value="ignore"/>
						<xs:enumeration value="report"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="message" type="xs:string"/>
			<xs:attribute name="test" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="always"/>
						<xs:enumeration value="postcheck"/>
						<xs:enumeration value="precheck"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="constraint">
		<xs:complexType>
			<xs:attribute name="condition" type="xs:string"/>
			<xs:attribute name="action" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="context">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="context" maxOccurs="unbounded"/>
				<xs:element ref="constraint" maxOccurs="unbounded"/>
			</xs:choice>
			<xs:attribute name="condition" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="default">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="context" maxOccurs="unbounded"/>
				<xs:element ref="constraint" maxOccurs="unbounded"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:element name="documentation">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="type" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:enumeration value="description"/>
								<xs:enumeration value="note"/>
								<xs:enumeration value="license"/>
								<xs:enumeration value="usage"/>
								<xs:enumeration value="other"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="item">
		<xs:complexType>
			<xs:attribute name="type" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="noun"/>
						<xs:enumeration value="corecomponent"/>
						<xs:enumeration value="BIE"/>
						<xs:enumeration value="BRIC"/>
						<xs:enumeration value="defaultAssembly"/>
						<xs:enumeration value="identifier"/>
						<xs:enumeration value="verb"/>
						<xs:enumeration value="schema"/>
						<xs:enumeration value="documentation"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="UIDReference" type="xs:string" use="required"/>
			<xs:attribute name="taxonomy" type="xs:string" use="required"/>
			<xs:attribute name="registry" type="xs:string"/>
			<xs:attribute name="datatype" type="xs:string"/>
			<xs:attribute name="setlength" type="xs:string"/>
			<xs:attribute name="setmask" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="registry">
		<xs:complexType>
			<xs:attribute name="name" type="xs:string" use="required"/>
			<xs:attribute name="access" type="xs:string" use="required"/>
			<xs:attribute name="method" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:NMTOKEN">
						<xs:enumeration value="URL"/>
						<xs:enumeration value="http"/>
						<xs:enumeration value="SOAP"/>
						<xs:enumeration value="ebXML"/>
						<xs:enumeration value="UDDI"/>
						<xs:enumeration value="Other"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="description" type="xs:string"/>
		</xs:complexType>
	</xs:element>
</xs:schema>