library
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns = "http://www.demandware.com/xml/impex/library/2006-10-31"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xml = "http://www.w3.org/XML/1998/namespace"
targetNamespace = "http://www.demandware.com/xml/impex/library/2006-10-31"
elementFormDefault = "qualified"
attributeFormDefault = "unqualified">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
<xsd:element name="library">
<xsd:complexType mixed="false">
<xsd:sequence>
<xsd:element name="header" type="complexType.Header" minOccurs="0" maxOccurs="1" />
<xsd:element name="folder" type="complexType.Folder" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="content" type="complexType.Content" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="library-id" type="simpleType.Generic.NonEmptyString.256" use="optional" />
</xsd:complexType>
</xsd:element>
<xsd:element name="header" type="complexType.Header" />
<xsd:element name="folder" type="complexType.Folder" />
<xsd:element name="content" type="complexType.Content" />
<xsd:complexType name="complexType.Header" mixed="false">
<xsd:sequence>
<xsd:element name="custom-attributes" type="sharedType.CustomAttributes" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.Folder" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="description" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="online-flag" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
<xsd:element name="template" type="simpleType.Generic.String.256" minOccurs="0" maxOccurs="1" />
<xsd:element name="parent" type="simpleType.Generic.NonEmptyString.256" minOccurs="0" maxOccurs="1" />
<xsd:element name="position" type="xsd:double" minOccurs="0" maxOccurs="1" />
<xsd:element name="page-attributes" type="complexType.PageAttributes" minOccurs="0" maxOccurs="1" />
<xsd:element name="custom-attributes" type="sharedType.CustomAttributes" minOccurs="0" maxOccurs="1" />
<xsd:element name="attribute-groups" type="complexType.AttributeGroups" minOccurs="0" maxOccurs="1" />
<xsd:element name="refinement-definitions" type="complexType.RefinementDefinitions" minOccurs="0" maxOccurs="1" />
<xsd:element name="content-detail-page-meta-tag-rules" type="complexType.PageMetaTagRules" minOccurs="0" maxOccurs="1" />
<xsd:element name="content-listing-page-meta-tag-rules" type="complexType.PageMetaTagRules" minOccurs="0" maxOccurs="1" />
<xsd:element name="sitemap-included-flag" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="sitemap-changefrequency" type="simpleType.SiteMapChangeFrequency" minOccurs="0"/>
<xsd:element name="sitemap-priority" type="simpleType.SiteMapPriority" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="mode" type="simpleType.ImportMode" use="optional" />
<xsd:attribute name="folder-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.AttributeGroups" mixed="false">
<xsd:sequence>
<xsd:element name="attribute-group" type="complexType.AttributeGroup" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.AttributeGroup" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="description" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="attribute" type="complexType.AttributeReference" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="group-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.AttributeReference" mixed="false">
<xsd:attribute name="attribute-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
<xsd:attribute name="system" type="xsd:boolean" default="false" use="optional" />
</xsd:complexType>
<xsd:complexType name="complexType.Content" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="description" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="type" type="simpleType.Generic.String.256" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
The type must either be a page ("page.*") or a component ("component.*"). Those types are defined
as part of the storefront cartridges, that should be assigned to the same sites to which the
given library is assigned to such that definition and data match.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="config" type="sharedType.Text" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
The config can only be set for pages (see contentassetpageconfig.json) and
components (contentassetcomponentconfig.json).
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="visibility-mode" type="complexType.LocalizedVisibilityMode" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
The visibility-mode can only be set for pages.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="data" type="sharedType.LocalizedText" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
The data can only be set for components (see contentassetcomponentdata.json).
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="search-words" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
The search-words are used for creating a search index on the content.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="aspect-type" type="simpleType.Generic.String.256" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
The aspect-type is only viable for Page Designer pages.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="online-flag" type="sharedType.SiteSpecificBoolean" minOccurs="0" maxOccurs="unbounded" nillable="true" />
<xsd:element name="searchable-flag" type="sharedType.SiteSpecificBoolean" minOccurs="0" maxOccurs="unbounded" nillable="true">
<xsd:annotation>
<xsd:documentation>
The searchable-flag cannot be set for components.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="template" type="simpleType.Generic.String.256" minOccurs="0" maxOccurs="1" />
<xsd:element name="page-attributes" type="complexType.PageAttributes" minOccurs="0" maxOccurs="1" />
<xsd:element name="custom-attributes" type="sharedType.SiteSpecificCustomAttributes" minOccurs="0" maxOccurs="1" />
<xsd:element name="folder-links" type="complexType.Content.FolderLinks" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
Components cannot be assigned to folders.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="content-links" type="complexType.Content.ContentLinks" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
The content-links can only be set for pages and components. Each can have multiple outgoing
links. Incoming links are only allowed for components (at most one per component).
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="content-object-assignments" type="complexType.Content.ContentObjectAssignments" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation>
The content-object-assignments can only be set for pages. Each page can be assigned to multiple
objects and each object can be assigned to multiple pages.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="sitemap-included-flag" type="sharedType.SiteSpecificBoolean" minOccurs="0" maxOccurs="unbounded" nillable="true">
<xsd:annotation>
<xsd:documentation>
The sitemap-included-flag cannot be set for components.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="sitemap-changefrequency" type="sharedType.SiteSpecificSiteMapChangeFrequency" minOccurs="0" maxOccurs="unbounded" nillable="true">
<xsd:annotation>
<xsd:documentation>
The sitemap-changefrequency cannot be set for components.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="sitemap-priority" type="sharedType.SiteSpecificSiteMapPriority" minOccurs="0" maxOccurs="unbounded" nillable="true">
<xsd:annotation>
<xsd:documentation>
The sitemap-priority cannot be set for components.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="content-detail-page-meta-tag-rules" type="complexType.PageMetaTagRules" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="mode" type="simpleType.ImportMode" />
<xsd:attribute name="content-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.Content.FolderLinks" mixed="false">
<xsd:sequence>
<xsd:element name="classification-link" type="complexType.Content.FolderLink" minOccurs="0" maxOccurs="1" />
<xsd:element name="folder-link" type="complexType.Content.FolderLink" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.Content.FolderLink" mixed="false">
<xsd:all>
<xsd:element name="position" type="xsd:double" minOccurs="0" maxOccurs="1" />
</xsd:all>
<xsd:attribute name="folder-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.Content.ContentLinks" mixed="false">
<xsd:annotation>
<xsd:documentation>
These links are only allowed between content elements of type page or component.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="content-link" type="complexType.Content.ContentLink" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.Content.ContentLink" mixed="false">
<xsd:annotation>
<xsd:documentation>
Each component can only have a single incoming content link (and pages cannot have incoming links).
</xsd:documentation>
</xsd:annotation>
<xsd:all>
<xsd:element name="position" type="xsd:double" minOccurs="0" maxOccurs="1" />
</xsd:all>
<xsd:attribute name="content-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
<xsd:attribute name="type" type="simpleType.Generic.NonEmptyString.256" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.Content.ContentObjectAssignments" mixed="false">
<xsd:annotation>
<xsd:documentation>
These links are only allowed between content elements of type page and other persistent objects. At the moment
only categories are supported.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="content-object-assignment" type="complexType.Content.ContentObjectAssignment" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.Content.ContentObjectAssignment" mixed="false">
<xsd:annotation>
<xsd:documentation>
Each object can be assigned to multiple pages (but only to one page per aspect type) and vice versa.
</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="object-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
<xsd:attribute name="lookup-mode" type="simpleType.AssignedObjectLookupMode" />
<xsd:attribute name="object-type" type="simpleType.AssignedObjectType" use="required" />
</xsd:complexType>
<xsd:simpleType name="simpleType.AssignedObjectType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="category" />
<xsd:enumeration value="product" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.AssignedObjectLookupMode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="category-explicit" />
<xsd:enumeration value="category-implicit" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="complexType.PageAttributes" mixed="false">
<xsd:sequence>
<xsd:element name="page-title" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="page-description" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="page-keywords" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="page-url" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.RefinementDefinitions" mixed="false">
<xsd:sequence>
<xsd:element name="refinement-definition" type="complexType.RefinementDefinition" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.RefinementDefinition" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="sort-mode" type="simpleType.Sorting.Mode" minOccurs="0" maxOccurs="1" />
<xsd:element name="sort-direction" type="simpleType.Sorting.Direction" minOccurs="0" maxOccurs="1" />
<xsd:element name="cutoff-threshold" type="xsd:int" minOccurs="0" maxOccurs="1" />
<xsd:element name="bucket-definitions" type="complexType.RefinementBuckets" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="type" type="simpleType.Refinement.Type" use="required" />
<xsd:attribute name="bucket-type" type="simpleType.Bucket.Type" use="optional" />
<xsd:attribute name="attribute-id" type="simpleType.Generic.NonEmptyString.256" />
<xsd:attribute name="system" type="xsd:boolean" default="false" use="optional" />
</xsd:complexType>
<xsd:complexType name="complexType.RefinementBuckets" mixed="false">
<xsd:choice>
<xsd:element name="attribute-bucket" type="complexType.AttributeRefinementBucket" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="threshold-bucket" type="complexType.ThresholdRefinementBucket" minOccurs="0" maxOccurs="unbounded" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="complexType.AttributeRefinementBucket" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="value-list" type="sharedType.LocalizedText" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.ThresholdRefinementBucket" mixed="false">
<xsd:sequence>
<xsd:element name="display-name" type="sharedType.LocalizedString" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="threshold" type="sharedType.LocalizedText" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sharedType.LocalizedString" mixed="false">
<xsd:simpleContent>
<xsd:extension base="simpleType.Generic.String.4000">
<xsd:attribute ref="xml:lang" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.CustomAttributes" mixed="false">
<xsd:sequence>
<xsd:element name="custom-attribute" type="sharedType.CustomAttribute" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sharedType.CustomAttribute" mixed="true">
<xsd:sequence>
<xsd:element name="value" type="simpleType.Generic.String" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="attribute-id" type="simpleType.Generic.NonEmptyString.256" use="required" />
<xsd:attribute ref="xml:lang" />
</xsd:complexType>
<xsd:complexType name="sharedType.LocalizedText" mixed="false">
<xsd:simpleContent>
<xsd:extension base="simpleType.Generic.String">
<xsd:attribute ref="xml:lang" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.Text" mixed="false">
<xsd:simpleContent>
<xsd:extension base="simpleType.Generic.String"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificCustomAttributes" mixed="false">
<xsd:sequence>
<xsd:element name="custom-attribute" type="sharedType.SiteSpecificCustomAttribute" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificCustomAttribute" mixed="false">
<xsd:complexContent>
<xsd:extension base="sharedType.CustomAttribute">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificBoolean" mixed="false">
<xsd:simpleContent>
<xsd:extension base="xsd:boolean">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificInt" mixed="false">
<xsd:simpleContent>
<xsd:extension base="xsd:int">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificDateTime" mixed="false">
<xsd:simpleContent>
<xsd:extension base="xsd:dateTime">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificSiteMapChangeFrequency" mixed="false">
<xsd:simpleContent>
<xsd:extension base="simpleType.SiteMapChangeFrequency">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="sharedType.SiteSpecificSiteMapPriority" mixed="false">
<xsd:simpleContent>
<xsd:extension base="simpleType.SiteMapPriority">
<xsd:attribute name="site-id" type="simpleType.Generic.NonEmptyString.32" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="complexType.PageMetaTagRules" mixed="false">
<xsd:sequence>
<xsd:element name="page-meta-tag-rule" type="complexType.PageMetaTagRule" minOccurs="0" maxOccurs="50" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="complexType.PageMetaTagRule" mixed="false">
<xsd:attribute name="rule-id" type="simpleType.Generic.NonEmptyString.100" use="required" />
</xsd:complexType>
<xsd:complexType name="complexType.LocalizedVisibilityMode">
<xsd:simpleContent>
<xsd:extension base="simpleType.VisibilityMode">
<xsd:attribute ref="xml:lang" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="simpleType.Generic.NonEmptyString.100">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="1" />
<xsd:maxLength value="100" />
<xsd:pattern value="\S|(\S(.*)\S)" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.NonEmptyString.4000">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="1" />
<xsd:maxLength value="4000" />
<xsd:pattern value="\S|(\S(.*)\S)" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.ImportMode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="delete" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.String">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.String.256">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="0" />
<xsd:maxLength value="256" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.String.4000">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="0" />
<xsd:maxLength value="4000" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.SiteMapChangeFrequency">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="always" />
<xsd:enumeration value="hourly" />
<xsd:enumeration value="daily" />
<xsd:enumeration value="weekly" />
<xsd:enumeration value="monthly" />
<xsd:enumeration value="yearly" />
<xsd:enumeration value="never" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.SiteMapPriority">
<xsd:restriction base="xsd:double">
<xsd:minInclusive value="0.0" />
<xsd:maxInclusive value="1.0" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.NonEmptyString.32">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="1" />
<xsd:maxLength value="32" />
<xsd:pattern value="\S|(\S(.*)\S)" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Generic.NonEmptyString.256">
<xsd:restriction base="simpleType.Generic.String">
<xsd:minLength value="1" />
<xsd:maxLength value="256" />
<xsd:pattern value="\S|(\S(.*)\S)" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Sorting.Mode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="value-name" />
<xsd:enumeration value="value-count" />
<xsd:enumeration value="folder-position" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Sorting.Direction">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ascending" />
<xsd:enumeration value="descending" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Refinement.Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="attribute" />
<xsd:enumeration value="folder" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.Bucket.Type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="none" />
<xsd:enumeration value="values" />
<xsd:enumeration value="thresholds" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="simpleType.VisibilityMode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="invisible" />
<xsd:enumeration value="visible" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>