PrimoSearchRequest

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by haim (Mercado Software Ltd) -->
<xs:schema
        targetNamespace="http://www.exlibris.com/primo/xsd/search/request"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:uic="http://www.exlibris.com/primo/xsd/primoview/uicomponents"
        xmlns="http://www.exlibris.com/primo/xsd/search/request"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:import namespace="http://www.exlibris.com/primo/xsd/primoview/uicomponents" schemaLocation="../primoview/UIComponents.xsd"/>

        <xs:annotation>
                <xs:documentation>
                        This Schema describes XML schema for primo search reqest
                        parameters
                </xs:documentation>
        </xs:annotation>
        <xs:element name="QueryTerm">
                <xs:annotation>
                        <xs:documentation>
                                Basic search term that includes index filed id,
                                operation and the value string
                        </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element name="IndexField" type="xs:string">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Field name in PNX search section
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element ref="PrecisionOperator" minOccurs="1" maxOccurs="1"/>
                                <xs:element name="Value" type="xs:string">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        String based value to as query string
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="includeValue" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                                <xs:element name="excludeValue" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>

                </xs:complexType>
        </xs:element>
        <xs:element name="BoolOpeator" default="AND">
                <xs:annotation>
                        <xs:documentation>
                                Supported boolean operators within nested QueryTerm elements
                        </xs:documentation>
                </xs:annotation>
                <xs:simpleType >
                        <xs:restriction base="xs:string">
                                <xs:enumeration value="AND" />
                                <xs:enumeration value="OR" />
                                <xs:enumeration value="NOT" />
                        </xs:restriction>
                </xs:simpleType>
        </xs:element>
        <xs:element name="PrecisionOperator" default="contains">
                <xs:annotation>
                        <xs:documentation>
                                One of the predefined operators contains, exact, begins_with
                        </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                        <xs:restriction base="xs:string">
                                <xs:enumeration value="contains" />
                                <xs:enumeration value="exact" />
                                <xs:enumeration value="begins_with" />
                        </xs:restriction>
                </xs:simpleType>
        </xs:element>
        <xs:element name="SortByList">
                <xs:annotation>
                        <xs:documentation>List of Sort Criteria</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element name="SortField" type="xs:string"
                                        maxOccurs="unbounded" minOccurs="0">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Sort Criteria

                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="FacetList">
                <xs:annotation>
                        <xs:documentation>List of Facets to be returned to the display</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element name="FacetField" type="xs:string"
                                        maxOccurs="unbounded" minOccurs="0">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Facet Field to use
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="Languages">
                <xs:annotation>
                        <xs:documentation>Restricts the search to documents within one or more languages.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element name="Language" type="xs:string"
                                        maxOccurs="unbounded">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Code for the representation of name of language conform to ISO-639
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>


        <xs:element name="RequestParam">
                <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>Used to send a parameter to be used by the engine or an adaptor at later time..</xs:documentation>
                        </xs:annotation>
                <xs:simpleContent>
                        <xs:extension base="xs:string">
                      <xs:attribute name="key" type="xs:string" use="required"  />
                    </xs:extension>
                </xs:simpleContent>
            </xs:complexType>
          </xs:element>

          <xs:element name="RequestParams">
       <xs:complexType>
                <xs:annotation>
                                <xs:documentation>Used to group all parameter to be used by the engine or an adaptor at later time..</xs:documentation>
                        </xs:annotation>
              <xs:sequence>
                        <xs:element ref="RequestParam" minOccurs="1" maxOccurs="unbounded" />
              </xs:sequence>
       </xs:complexType>
       </xs:element>

        <xs:element name="PrimoSearchRequest">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="RequestParams" minOccurs="0" maxOccurs="1"/>
                                <xs:element ref="QueryTerms" />
                                <xs:element name="StartIndex" type="xs:int"
                                        default="0">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Zero-based index of the first desired result
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="BulkSize" type="xs:int"
                                        default="10">
                                        <xs:annotation>
                                                <xs:documentation>

                                                        Number of results desired per query
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="DidUMeanEnabled" type="xs:boolean"
                                        default="false">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        When true ask for "did you mean expiration",
                                                        if exist, as part of the result
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="HighlightingEnabled" type="xs:boolean"
                                        default="false" minOccurs="0" maxOccurs="1">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Highlights the search terms in the results
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="GetMore" type="xs:int" default="0"
                                                        minOccurs="0" maxOccurs="1">
                                </xs:element>
                                <xs:element name="nextAfterMore" type="xs:int" default="0"
                                                        minOccurs="0" maxOccurs="1">
                                </xs:element>
                                <xs:element ref="Languages" minOccurs="0" maxOccurs="1">
                                        <xs:annotation>
                                                <xs:documentation>
                                                Restricts the search to documents within one or more languages.
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>

                                <xs:element ref="SortByList" minOccurs="0" maxOccurs="1">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Apply rules for sorting, this option is not mandetory
                                                        when ommited sorting will be done by primo ranking
                                                </xs:documentation>

                                        </xs:annotation>
                                </xs:element>
                                <xs:element ref="FacetList" minOccurs="0" maxOccurs="1">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        Name the facet results to return with the result response, this option is not mandetory.
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="DisplayFields" type="xs:string" maxOccurs="unbounded" minOccurs="0">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        List of display field for highlighting.
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                        <xs:element ref="Locations" minOccurs="0" maxOccurs="1">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        List of locations (locales/remote) to perform the search on
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                                <xs:element name="InstBoost" type="xs:boolean" maxOccurs="1" minOccurs="0">
                                        <xs:annotation>
                                                <xs:documentation>
                                                        set boost to records from My institution
                                                </xs:documentation>
                                        </xs:annotation>
                                </xs:element>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="QueryTerms">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="BoolOpeator" maxOccurs="1" minOccurs="1"/>
                                <xs:element ref="QueryTerm" maxOccurs="unbounded" />
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
        <xs:element name="Locations">

                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="uic:Location" maxOccurs="unbounded" minOccurs="0"/>
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
</xs:schema>