UIComponents

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
        targetNamespace="http://www.exlibris.com/primo/xsd/primoview/uicomponents"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns="http://www.exlibris.com/primo/xsd/primoview/uicomponents"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:annotation>
                <xs:documentation>
                        This file specify the schema for configuration files that
                        maps components name and their relevant options and facets
                </xs:documentation>
        </xs:annotation>
        <xs:element name="UIOption">
                <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>
                                        Single component option that includes it value and
                                        the mapping to search engine index filed when
                                        relevant.
                                </xs:documentation>
                        </xs:annotation>
                        <xs:attribute name="displayValue" type="xs:string"
                                use="required" />
                        <xs:attribute name="isDefaultOption" type="xs:boolean"
                                use="required" />
                        <xs:attribute name="indexField" type="xs:string"
                                use="optional" />
                        <xs:attribute name="precisionOperator" type="xs:string"
                                use="optional" />
                        <xs:attribute name="value" type="xs:string" use="required" />
                        <xs:attribute name="valid" type="xs:boolean" default="true" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="UIComponent">
                <xs:annotation />
                <xs:complexType>
                        <xs:sequence>
                                <xs:annotation>
                                        <xs:documentation>
                                                Single UI component may be a combo-box ,list-box
                                                , multi checkbox
                                        </xs:documentation>
                                </xs:annotation>

                                <xs:element ref="UIComponentType" minOccurs="1"
                                        maxOccurs="1" />
                                <xs:element ref="UIOption" minOccurs="1"
                                        maxOccurs="unbounded" />
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:string"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="UIComponents">
                <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>Root element</xs:documentation>
                        </xs:annotation>
                        <xs:sequence>
                                <xs:element ref="UIComponent" minOccurs="1"
                                        maxOccurs="unbounded" />
                                <xs:element ref="Scopes" minOccurs="1"
                                        maxOccurs="unbounded" />
                                <xs:element ref="Location" minOccurs="1"
                                        maxOccurs="unbounded" />
                                <xs:element ref="ShowFindInDB" minOccurs="0"
                                        maxOccurs="1" />
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="UIComponentType">
                <xs:simpleType>
                        <xs:annotation>
                                <xs:documentation>
                                        List of eums that represent all available components
                                        identifies. In order to add a component you should
                                        add a unique id here and the add it to the
                                        UIComponent.xml
                                </xs:documentation>
                        </xs:annotation>
                        <xs:restriction base="xs:string">
                                <xs:enumeration value="freeText" />
                                <xs:enumeration value="mediaType" />
                                <xs:enumeration value="precisionOperator" />
                                <xs:enumeration value="scope" />
                                <xs:enumeration value="publicationDate" />
                                <xs:enumeration value="language" />

                                <xs:enumeration value="sortby" />
                                <xs:enumeration value="drStartDay" />
                                <xs:enumeration value="drEndDay" />
                                <xs:enumeration value="drStartMonth" />
                                <xs:enumeration value="drEndMonth" />
                                <xs:enumeration value="drStartYear" />
                                <xs:enumeration value="drEndYear" />
                                <!-- User defined ui component -->
                                <xs:enumeration value="ud" />
                        </xs:restriction>
                </xs:simpleType>
        </xs:element>
        <xs:element name="Location">
                <xs:complexType>
                        <xs:attribute name="type" use="required">
                                <xs:simpleType>
                                        <xs:restriction base="xs:NMTOKEN">
                                                <xs:enumeration value="local" />
                                                <xs:enumeration value="remote" />
                                                <xs:enumeration value="adaptor" />
                                        </xs:restriction>
                                </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="value" use="required" type="xs:string">
                        </xs:attribute>
                        <xs:attribute name="category">
                                <xs:simpleType>
                                        <xs:restriction base="xs:NMTOKEN">
                                                <xs:enumeration value="qs" />
                                                <xs:enumeration value="database" />
                                        </xs:restriction>
                                </xs:simpleType>
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
        <xs:element name="Scope">
                <xs:complexType>
                        <xs:attribute name="id" use="required" type="xs:string" >
                        </xs:attribute>
                        <xs:attribute name="locationrefs" use="required" type="xs:string" />
                        <xs:attribute name="personalSetScope" use="required" type="xs:boolean" />
                        <xs:attribute name="selectedPersonalSetScope" use="required" type="xs:boolean" />

                </xs:complexType>
        </xs:element>
        <xs:element name="Scopes">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="Scope" maxOccurs="unbounded" />
                        </xs:sequence>
                        <xs:attribute name="id" use="required" type="xs:string" />
                </xs:complexType>
        </xs:element>
        <xs:element name="LocationRef">
                <xs:complexType>
                        <xs:attribute name="id" use="required" type="xs:string">
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
        <xs:element name="ShowFindInDB">
                <xs:complexType>
                <xs:attribute name="value" use="required" type="xs:boolean"></xs:attribute>
                </xs:complexType>
        </xs:element>
</xs:schema>