<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.adsml.org/adsmlstructureddescriptions/1.0" xmlns:adsml-sd="http://www.adsml.org/adsmlstructureddescriptions/1.0" xmlns:adsml="http://www.adsml.org/typelibrary/2.0" xmlns:adsml-cv="http://www.adsml.org/controlledvocabularies/3.0" xmlns:adsml-sx="http://www.adsml.org/schema-extensions/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.adsml.org/adsmlstructureddescriptions/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0.8" id="AdsMLStructuredDescriptions-1.0.8-PublicTypeLibrary-AS-9" adsml-sx:status="ApprovedSpecification" adsml-sx:internalVersion="9">
<xs:import namespace="http://www.adsml.org/typelibrary/2.0" schemaLocation="AdsMLTypeLibrary-2.0-AS.xsd"/>
<xs:import namespace="http://www.adsml.org/controlledvocabularies/3.0" schemaLocation="AdsMLControlledVocabularies-3.0-AS.xsd"/>
<xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xs:annotation>
<xs:appinfo>
<dc:creator>AdsML Technical Working Group</dc:creator>
<dc:date>2010-04-15</dc:date>
<dc:rights>Copyright © 2010 AdsML Consortium. All rights reserved.</dc:rights>
</xs:appinfo>
<xs:documentation>AdsMLStructuredDescriptions Schema Version 1.0.</xs:documentation>
<xs:documentation> == Non-Exclusive License Agreement for AdsML Consortium Specifications ==
Copyright © 2010 AdsML® Consortium. All rights reserved. Copyright Acknowledgements: The
AdsML® Non-Exclusive License Agreement is based in part on the "Non-Exclusive License
Agreement" on Page iii of "OpenTravel™ Alliance Message Specifications - Publication
2001A", September 27, 2001, Copyright © 2001. OpenTravel™ Alliance, Inc. The AdsML Code
of Conduct is based on the "OTA Code of Conduct" on Page ix of "OpenTravel™ Alliance
Message Specifications - Publication 2001A", September 27, 2001, Copyright © 2001.
OpenTravel™ Alliance, Inc. Non-Exclusive License Agreement for AdsML Consortium
Specifications USER LICENSE IMPORTANT: AdsML® Consortium specifications and related
documents, whether the document be in a paper or electronic format, are made available
to you subject to the terms stated below. Please read the following carefully. 1. All
AdsML® Consortium Copyrightable Works are licensed for use only on the condition that
the users agree to this license, and this work has been provided according to such an
agreement. Subject to these and other licensing requirements contained herein, you may,
on a non-exclusive basis, use the Specification. 2. The AdsML® Consortium openly
provides this specification for voluntary use by individuals, partnerships, companies,
corporations, organizations and any other entity for use at the entity’s own risk. This
disclaimer, license and release is intended to apply to the AdsML® Consortium, its
officers, directors, agents, representatives, members, contributors, affiliates,
contractors, or coventurers (collectively the AdsML® Consortium) acting jointly or
severally. 3. This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or assist in its
implementation may be prepared, copied, published and distributed, in whole or in part,
without restriction of any kind, provided that the above copyright notice and this Usage
License are included on all such copies and derivative works. However, this document
itself may not be modified in any way, such as by removing the copyright notice or
references to the AdsML® Consortium, except as needed for the purpose of developing
AdsML® specifications, in which case the procedures for copyrights defined in the AdsML®
Process document must be followed, or as required to translate it into languages other
than English. The limited permissions granted above are perpetual and will not be
revoked by AdsML® or its successors or assigns. 4. Any use, duplication, distribution,
or exploitation of the Specification in any manner is at your own risk. 5. NO WARRANTY,
EXPRESSED OR IMPLIED, IS MADE REGARDING THE ACCURACY, ADEQUACY, COMPLETENESS, LEGALITY,
RELIABILITY OR USEFULNESS OF ANY INFORMATION CONTAINED IN THIS DOCUMENT OR IN ANY
SPECIFICATION OR OTHER PRODUCT OR SERVICE PRODUCED OR SPONSORED BY THE ADSML®
CONSORTIUM. THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN AND INCLUDED IN ANY
SPECIFICATION OR OTHER PRODUCT OR SERVICE OF THE ADSML® CONSORTIUM IS PROVIDED ON AN "AS
IS" BASIS. THE ADSML® CONSORTIUM DISCLAIMS ALL WARRANTIES OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO, ANY ACTUAL OR ASSERTED WARRANTY OF
NON-INFRINGEMENT OF PROPRIETARY RIGHTS, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR
PURPOSE. NEITHER THE ADSML® CONSORTIUM NOR ITS CONTRIBUTORS SHALL BE HELD LIABLE FOR ANY
IMPROPER OR INCORRECT USE OF INFORMATION. NEITHER THE ADSML® CONSORTIUM NOR ITS
CONTRIBUTORS ASSUME ANY RESPONSIBILITY FOR ANYONE'S USE OF INFORMATION PROVIDED BY THE
ADSML® CONSORTIUM. IN NO EVENT SHALL THE ADSML® CONSORTIUM OR ITS CONTRIBUTORS BE LIABLE
TO ANYONE FOR DAMAGES OF ANY KIND, INCLUDING BUT NOT LIMITED TO, COMPENSATORY DAMAGES,
LOST PROFITS, LOST DATA OR ANY FORM OF SPECIAL, INCIDENTAL, INDIRECT, CONSEQUENTIAL OR
PUNITIVE DAMAGES OF ANY KIND WHETHER BASED ON BREACH OF CONTRACT OR WARRANTY, TORT,
PRODUCT LIABILITY OR OTHERWISE. 6. The AdsML® Consortium takes no position regarding the
validity or scope of any intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in this document or the
extent to which any license under such rights might or might not be available. The
AdsML® Consortium does not represent that it has made any effort to identify any such
rights. Copies of claims of rights made available for publication, assurances of
licenses to be made available, or the result of an attempt made to obtain a general
license or permission for the use of such proprietary rights by implementers or users of
this specification, can be obtained from the Secretariat of the AdsML® Consortium. 7. By
using this specification in any manner or for any purpose, you release the AdsML®
Consortium from all liabilities, claims, causes of action, allegations, losses,
injuries, damages, or detriments of any nature arising from or relating to the use of
the Specification or any portion thereof. You further agree not to file a lawsuit, make
a claim, or take any other formal or informal legal action against the AdsML®
Consortium, resulting from your acquisition, use, duplication, distribution, or
exploitation of the Specification or any portion thereof. Finally, you hereby agree that
the AdsML® Consortium is not liable for any direct, indirect, special or consequential
damages arising from or relating to your acquisition, use, duplication, distribution, or
exploitation of the Specification or any portion thereof. 8. This User License is
perpetual subject to your conformance to the terms of this User License. The AdsML®
Consortium may terminate this User License immediately upon your breach of this
agreement and, upon such termination you will cease all use duplication, distribution,
and/or exploitation in any manner of the Specification. 9. This User License reflects
the entire agreement of the parties regarding the subject matter hereof and supercedes
all prior agreements or representations regarding such matters, whether written or oral.
To the extent any portion or provision of this User License is found to be illegal or
unenforceable, then the remaining provisions of this User License will remain in full
force and effect and the illegal or unenforceable provision will be construed to give it
such effect as it may properly have that is consistent with the intentions of the
parties. This User License may only be modified in writing signed by an authorized
representative of the AdsML® Consortium. This User License will be governed by the law
of Darmstadt (Federal Republic of Germany), as such law is applied to contracts made and
fully performed in Darmstadt (Federal Republic of Germany). Any disputes arising from or
relating to this User License will be resolved in the courts of Darmstadt (Federal
Republic of Germany). You consent to the jurisdiction of such courts over you and
covenant not to assert before such courts any objection to proceeding in such forums.
10. Except as expressly provided herein, you may not use the name of the AdsML®
Consortium, or any of its marks, for any purpose without the prior consent of an
authorized representative of the owner of such name or mark. IF YOU DO NOT AGREE TO
THESE TERMS PLEASE CEASE ALL USE OF THIS SPECIFICATION NOW. IF YOU HAVE ANY QUESTIONS
ABOUT THESE TERMS, PLEASE CONTACT THE SECRETARIAT OF THE ADSML® CONSORTIUM. AS OF THE
DATE OF THIS REVISION OF THE SPECIFICATION YOU MAY CONTACT THE AdsML® Consortium at
www.adsml.org. </xs:documentation>
</xs:annotation>
<!-- =============================================================== -->
<!-- ====================== DATA TYPES ============================= -->
<!-- =============================================================== -->
<!-- ~~~~~~~~~~~~~~~~~~ Simple data types ~~~~~~~~~~~~~~~~~~ -->
<!-- none -->
<!-- ~~~~~~~~~~~~~~~~~~ Complex data types ~~~~~~~~~~~~~~~~~~ -->
<xs:complexType name="ValueTextType">
<xs:simpleContent>
<xs:extension base="adsml:LongStringType">
<xs:attribute name="id" type="adsml:IDType"/>
<xs:attribute name="preferredName" type="adsml:BooleanType"/>
<xs:attribute name="codeAuthority" type="adsml:ShortStringType"/>
<xs:attribute name="codeSchemeName" type="adsml:ShortStringType"/>
<xs:attribute name="codeSchemeVersion" type="adsml:ShortStringType"/>
<xs:attribute name="codeDisplayName" type="adsml:ShortStringType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- ~~~~~~~~~~~~~~~~~~ Simple root types ~~~~~~~~~~~~~~~~~~ -->
<!-- none -->
<!-- ~~~~~~~~~~~~~~~~~~ Enumerated simple data types - Normative Controlled Vocabularies ~~~~~~~~~~~~~~~~~~ -->
<xs:simpleType name="DataType">
<xs:restriction base="adsml:ShortTokenType">
<xs:enumeration value="Text"/>
<xs:enumeration value="Value"/>
<xs:enumeration value="Decimal"/>
<xs:enumeration value="Integer"/>
<xs:enumeration value="Boolean"/>
<xs:enumeration value="DateTime"/>
<xs:enumeration value="Date"/>
<xs:enumeration value="Time"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="UsageType">
<xs:restriction base="adsml:ShortTokenType">
<xs:enumeration value="Required"/>
<xs:enumeration value="Optional"/>
<xs:enumeration value="Encouraged"/>
</xs:restriction>
</xs:simpleType>
<!-- =============================================================== -->
<!-- ====================== BASIC COMPONENTS ====================== -->
<!-- =============================================================== -->
<!-- ~~~~~~~~~~~~~~~~~~ Attributes ~~~~~~~~~~~~~~~~~~ -->
<xs:attributeGroup name="CommonObjectPropertyAttributes">
<xs:attribute name="propertyID" type="adsml:ShortTokenType" use="required"/>
<xs:attribute name="internalName" type="adsml:ShortStringType" use="required"/>
<xs:attribute name="displayName" type="adsml:ShortStringType"/>
<xs:attribute name="usage" type="UsageType"/>
<xs:attribute name="repeatable" type="adsml:BooleanType"/>
</xs:attributeGroup>
<xs:attributeGroup name="ObjectPropertyAttributes">
<xs:attributeGroup ref="CommonObjectPropertyAttributes"/>
<xs:attribute name="dataType" type="DataType"/>
<xs:attribute name="value" type="adsml:StringType"/>
<xs:attribute name="defaultValue" type="adsml:StringType"/>
<xs:attribute name="allowedValuesURIRef" type="adsml:URIType"/>
<xs:attribute name="minValue" type="adsml:DoubleType"/>
<xs:attribute name="maxValue" type="adsml:DoubleType"/>
<xs:attribute name="minLength" type="adsml:IntegerType"/>
<xs:attribute name="maxLength" type="adsml:IntegerType"/>
<xs:attribute name="formatMask" type="adsml:StringType"/>
<xs:attribute name="searchable" type="adsml:BooleanType"/>
<xs:attribute name="publishable" type="adsml:BooleanType"/>
</xs:attributeGroup>
<!-- ~~~~~~~~~~~~~~~~~~ Elements ~~~~~~~~~~~~~~~~~~ -->
<xs:element name="DisplayName" type="adsml:LongStringType"/>
<xs:element name="IndustryCode" type="adsml:CodeType"/>
<xs:element name="InternalName" type="adsml:LongStringType"/>
<xs:element name="PropertyModifier" type="PropertyModifierType"/>
<xs:element name="Value" type="ValueTextType"/>
<!-- ~~~~~~~~~~~~~~~~~~ Types ~~~~~~~~~~~~~~~~~~ -->
<xs:complexType name="PropertyModifierType">
<xs:attributeGroup ref="PropertyAttributes"/>
</xs:complexType>
<!-- =============================================================== -->
<!-- ====================== AGGREGATE COMPONENTS ================ -->
<!-- =============================================================== -->
<!-- ~~~~~~~~~~~~~~~~~~ Attributes ~~~~~~~~~~~~~~~~~~ -->
<xs:attributeGroup name="CommonPropertyAttributes">
<xs:attribute name="propertyID" type="adsml:ShortTokenType" use="required"/>
<xs:attribute name="internalName" type="adsml:ShortStringType" use="required"/>
<xs:attribute name="displayName" type="adsml:ShortStringType"/>
</xs:attributeGroup>
<xs:attributeGroup name="PropertyAttributes">
<xs:attributeGroup ref="CommonPropertyAttributes"/>
<xs:attribute name="value" type="adsml:StringType" use="required"/>
</xs:attributeGroup>
<!-- ~~~~~~~~~~~~~~~~~~ Elements ~~~~~~~~~~~~~~~~~~ -->
<!-- ================== AdsML StructuredDescriptions element =============== -->
<xs:element name="StructuredDescriptions" type="StructuredDescriptionsType">
<xs:unique name="objectDescriptionIDUniquenessConstraint">
<xs:selector xpath="adsml-sd:AdObjectDescription"/>
<xs:field xpath="@objectDescriptionID"/>
</xs:unique>
<xs:unique name="advertisedItemPropertyIDUniquenessConstraint">
<xs:selector xpath=".//adsml-sd:Property|.//adsml-sd:PropertyGroup|.//adsml-sd:PropertyModifier"/>
<xs:field xpath="@propertyID"/>
</xs:unique>
</xs:element>
<xs:element name="AdObjectDescription" type="AdObjectDescriptionType"/>
<xs:element name="Entry" type="EntryType"/>
<xs:element name="IndustryCodeSet" type="IndustryCodeSetType"/>
<xs:element name="ObjectDefinition" type="ObjectDefinitionType"/>
<xs:element name="ObjectDefinitionHeader" type="ObjectDefinitionHeaderType"/>
<xs:element name="ObjectProperty" type="ObjectPropertyType"/>
<xs:element name="ObjectPropertyGroup" type="ObjectPropertyGroupType"/>
<xs:element name="ObjectPropertyModifier" type="ObjectPropertyModifierType"/>
<xs:element name="PercentageAllocation" type="adsml:IntegerType"/>
<xs:element name="Property" type="PropertyType"/>
<xs:element name="PropertyGroup" type="PropertyGroupType"/>
<xs:element name="ValueTable" type="ValueTableType"/>
<xs:element name="ValueTableHeader" type="ValueTableHeaderType"/>
<xs:element name="ValueTables" type="ValueTablesType"/>
<!-- ~~~~~~~~~~~~~~~~~~ Groups ~~~~~~~~~~~~~~~~~~ -->
<!-- none -->
<!-- ~~~~~~~~~~~~~~~~~~ Types ~~~~~~~~~~~~~~~~~~ -->
<!-- ================== AdsML StructuredDescriptions element =============== -->
<xs:complexType name="StructuredDescriptionsType">
<xs:sequence>
<xs:element ref="IndustryCodeSet" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="AdObjectDescription" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdObjectDefinitionsType">
<xs:sequence>
<xs:element ref="ObjectDefinition" maxOccurs="unbounded"/>
<xs:element ref="ValueTables" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="adObjectDefinitionsURI" type="adsml:URIType" use="required"/>
<xs:attribute ref="xml:base" use="optional"/>
</xs:complexType>
<xs:complexType name="AdObjectDescriptionType">
<xs:choice maxOccurs="unbounded">
<xs:element ref="Property"/>
<xs:element ref="PropertyGroup"/>
</xs:choice>
<xs:attribute name="objectDescriptionID" type="adsml:ShortTokenType" use="required"/>
<xs:attribute name="objectDefinitionURIRef" type="adsml:URIType" use="required"/>
</xs:complexType>
<xs:complexType name="EntryType">
<xs:sequence>
<xs:element ref="adsml:Description"/>
<xs:element ref="Value" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="adsml:IDType"/>
</xs:complexType>
<xs:complexType name="HeaderType">
<xs:sequence>
<xs:element ref="InternalName"/>
<xs:element ref="DisplayName" minOccurs="0"/>
<xs:element ref="adsml:Description" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="issuedBy" type="adsml:ShortStringType"/>
</xs:complexType>
<xs:complexType name="IndustryCodeSetType">
<xs:sequence>
<xs:element ref="IndustryCode"/>
<xs:element ref="PercentageAllocation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="objectDescriptionIDRef" type="adsml:ShortTokenType"/>
</xs:complexType>
<xs:complexType name="ObjectDefinitionType">
<xs:sequence>
<xs:element ref="ObjectDefinitionHeader"/>
<xs:element ref="IndustryCode" minOccurs="0"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ObjectProperty"/>
<xs:element ref="ObjectPropertyGroup"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="objectDefinitionURI" type="adsml:URIType" use="required"/>
<xs:attribute name="parentObjectDefinitionURIRef" type="adsml:URIType" use="optional"/>
<xs:attribute ref="xml:base" use="optional"/>
<xs:attribute ref="xml:lang" use="optional"/>
</xs:complexType>
<xs:complexType name="ObjectDefinitionHeaderType">
<xs:complexContent>
<xs:extension base="HeaderType">
<xs:attribute name="rulesetVersion" type="adsml:ShortStringType"/>
<xs:attribute name="rulesetUniqueID" type="adsml:ShortStringType"/>
<xs:attribute name="rulesetIssuedDateTime" type="adsml:DateTimeType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ObjectPropertyGroupType">
<xs:sequence>
<xs:element ref="adsml:Description" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element ref="ObjectProperty"/>
<xs:element ref="ObjectPropertyGroup"/>
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="CommonObjectPropertyAttributes"/>
</xs:complexType>
<xs:complexType name="ObjectPropertyModifierType">
<xs:sequence>
<xs:element ref="adsml:Description" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="ObjectPropertyAttributes"/>
</xs:complexType>
<xs:complexType name="ObjectPropertyType">
<xs:sequence>
<xs:element ref="adsml:Description" minOccurs="0"/>
<xs:element ref="ObjectPropertyModifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="ObjectPropertyAttributes"/>
</xs:complexType>
<xs:complexType name="PropertyGroupType">
<xs:choice maxOccurs="unbounded">
<xs:element ref="Property"/>
<xs:element ref="PropertyGroup"/>
</xs:choice>
<xs:attributeGroup ref="CommonPropertyAttributes"/>
</xs:complexType>
<xs:complexType name="PropertyType">
<xs:sequence>
<xs:element ref="PropertyModifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="PropertyAttributes"/>
</xs:complexType>
<xs:complexType name="ValueTableType">
<xs:sequence>
<xs:element ref="ValueTableHeader"/>
<xs:element ref="Entry" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="valueTableURI" type="adsml:URIType" use="required"/>
<xs:attribute ref="xml:base" use="optional"/>
<xs:attribute ref="xml:lang" use="optional"/>
</xs:complexType>
<xs:complexType name="ValueTableHeaderType">
<xs:complexContent>
<xs:extension base="HeaderType">
<xs:attribute name="valueTableVersion" type="adsml:ShortStringType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ValueTablesType">
<xs:sequence>
<xs:element ref="ValueTable" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
|