Delen via


Recordzoekquery-indeling

Voor een aanroep van de PeerGroupSearchRecords functie is een xml-queryreeksparameter vereist die wordt gebruikt om de basiscriteria van een zoekopdracht te bepalen. Gebruik het volgende schema om een XML-tekenreeks te formuleren:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="https://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="alphanumType">
     <xs:restriction base="xs:string">
        <xs:pattern value="\c+"/>
     </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="operatorType">
      <xs:choice maxOccurs="unbounded">
         <xs:element ref="and" />
         <xs:element ref="or" />
         <xs:element ref="clause" />
      </xs:choice>
  </xs:complexType>

  <xs:element name="and" type="operatorType"/>

  <xs:element name="or" type="operatorType"/>

  <xs:element name="clause">
      <xs:complexType>
          <xs:simpleContent>
              <xs:extension base="xs:string">
        <xs:attribute name="attrib" type="alphanumType" />
        <xs:attribute name="type">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="string"/>
                      <xs:enumeration value="date"/>
                      <xs:enumeration value="int"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
        <xs:attribute name="compare" default="equal">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="equal"/>
                      <xs:enumeration value="greater"/>
                      <xs:enumeration value="less"/>
                      <xs:enumeration value="notequal"/>
                      <xs:enumeration value="greaterorequal"/>
                      <xs:enumeration value="lessorequal"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:extension>
          </xs:simpleContent>
      </xs:complexType>
  </xs:element>

  <xs:element name="peersearch">
      <xs:complexType>
          <xs:choice>
              <xs:element ref="clause" />
              <xs:element ref="and" />
              <xs:element ref="or" />
          </xs:choice>
      </xs:complexType>
  </xs:element>
</xs:schema> 

Het primaire element in een recordzoekopdracht is peersearch-, die de URI (Uniform Resource Identifier) van het gekoppelde schema bevat in het kenmerk xmlns xmlns. Wanneer peersearch- wordt gebruikt als onderliggend element, kunt u en, componenten of als onderliggende elementen gebruiken.

  • en : het element en voert een logische AND-bewerking uit op een of meer componenten tussen de openings- en afsluittags. Andere en en of tags kunnen onderliggende items zijn en recursieve resultaten van hun onderliggende componenten worden opgenomen in de bewerking.

    Als u bijvoorbeeld een record wilt ophalen die een naam bevat die gelijk is aan James Peters en een laatste update die groter is dan 2-28-2003, of een aanmaakdatum die kleiner is dan 1-31-2003, gebruikt u de volgende XML-querytekenreeks:

    <?xml version="1.0" encoding="utf-8" ?> 
    <peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
       <and>
          <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
          <or>
             <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
             <clause attrib="peercreationtime" type="date" compare="less">2003-02-328</clause>
          </or>
       </and>
    </peersearch>
    
  • component - De component element geeft een eenvoudige vergelijkende regel op waarmee de waarde van een specifiek recordkenmerk wordt vergeleken met de waarde tussen de openings- en slottags. Het type en kenmerken vergelijken moet worden opgegeven vergelijken de vergelijkingsbewerking aangeeft die moet worden uitgevoerd. Een eenvoudige zoekopdracht die aangeeft dat alle overeenkomende records bijvoorbeeld een peercreatorid waarde moeten hebben die gelijk is aan James Peters, wordt als volgt weergegeven in de XML-queryreeks:

    <?xml version="1.0" encoding="utf-8" ?> 
    <peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
       <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
    </peersearch>
    

    Veelvoorkomende kenmerken zijn int, tekenreeksen datum. Het kenmerk datum kan een van de standaarddatumnotaties zijn die worden beschreven in https://www.w3.org/TR/NOTE-datetime.

    Waarden voor het vergelijken van kenmerk zijn gelijk aan, notqual, minder, groter, lessorequalen greaterorequal.

  • of: het element of voert een logische OR-bewerking uit op een of meer componenten tussen de openings- en afsluittags. Andere of en en elementen kunnen onderliggende elementen zijn en recursieve resultaten van de onderliggende componenten worden opgenomen in de bewerking. Als u bijvoorbeeld een record wilt ophalen die een naam bevat die gelijk is aan James Peters of een laatste update tussen 1/31/2003 en 2-28-2003, gebruikt u de volgende XML-querytekenreeks:
<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
   <or>
      <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
      <and>
         <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
         <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
      </and>
   </or>
</peersearch>

Het eerste niveau van knooppunten na peersearch- kan slechts één element hebben. Latere onderliggende elementen van dat element kunnen echter veel elementen op hetzelfde niveau hebben.

De volgende zoekquery is onjuist:

<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
   <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
   <and>
      <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
      <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
   </and>
</peersearch>

De query mislukt omdat twee waarden worden geretourneerd voor de overeenkomst zonder te worden omgezet in één waar/onwaar-waarde, wat betekent dat één component een query is voor de naam van een record die gelijk is aan James Peters, en de AND-bewerking overeenkomt met de twee componentcomponenten. Het resultaat is twee logische waarden waar/onwaar die tegenstrijdig zijn.

Als u alle records wilt ophalen die een naam bevatten die gelijk is aan James Peters en een laatste update tussen 1/31/2003 en 28/2003, plaatst u de -component en en tags die zich op hetzelfde niveau bevinden tussen het openen en sluiten van en tags. In het volgende voorbeeld ziet u de geslaagde query:

<?xml version="1.0" encoding="utf-8" ?> 
<peersearch xmlns:xs="https://www.w3.org/2001/XMLSchema">
    <and>
      <clause attrib="peercreatorid" type="string" compare="equal">James Peters</clause>
      <and>
         <clause attrib="peerlastmodificationtime" type="date" compare="greater">2003-01-31</clause>
         <clause attrib="peerlastmodificationtime" type="date" compare="less">2003-02-28</clause>
      </and>
   </and>
</peersearch>

De volgende lijst bevat andere specifieke informatie die u moet weten om een geslaagde query te schrijven:

  • De tags en en of kunnen zich niet bevinden tussen het openen en sluiten van component tags, omdat ze in die configuratie worden geïnterpreteerd als onderdeel van de waarde waarmee moet worden vergeleken, wat resulteert in een fout of een mislukte overeenkomst.
  • Elk paar en en of tags voor openen en sluiten moet ten minste één of meer onderliggende knooppunten bevatten.
  • Een nulset elementen is niet toegestaan in dit schema.

Recordkenmerken

Met behulp van het recordkenmerkschemakan een gebruiker recordkenmerken maken die het attrib XML-kenmerk in een componentelement specificeert. Kenmerken voor een nieuwe record worden toegevoegd door de pszAttributes lid van PEER_RECORD in te stellen op een XML-tekenreeks met behulp van de indeling die is opgegeven in het schema.

De Peer Infrastructure behoudt zich de volgende kenmerknamen voor:

  • peerlastmodifiedby
  • peercreatorid-
  • peerlastmodificationtime
  • peerrecordid
  • peerrecordtype
  • peercreationtime-
  • peerlastmodificationtime

Speciale tekens

Bepaalde tekens kunnen worden gebruikt om overeenkomende patronen uit te drukken of om andere speciale tekens te ontsnappen. Deze tekens worden beschreven in de onderstaande tabel.

Tekenpatroon Beschrijving
* Het jokerteken. Wanneer dit teken wordt aangetroffen in een componentwaarde, komt deze overeen met 0-n tekens van een willekeurige waarde, inclusief witruimte en niet-numerieke tekens. Bijvoorbeeld:
"<component attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
Deze component komt overeen met alle peercreatorid waarden met een voornaam van 'James' en een achternaam die begint met 'P'.
\* Een escape-sterretje. Deze reeks komt overeen met een sterretje.
? Het jokerteken met één teken. Wanneer dit teken wordt aangetroffen in een componentwaarde, komt dit overeen met een willekeurig teken, inclusief witruimte en niet-phanumerische tekens. Bijvoorbeeld:
"<component attrib="bestandsnaam" type="string" compare="equal">data-0?.xml</component>"
Deze component komt overeen met bestandsnaam waarden zoals 'data-01.xml' en 'data-0B.xml'.
\? Een escape-vraagteken. Deze reeks komt overeen met een vraagteken.
\\ Een ontsnapte backslash. Deze reeks komt overeen met één backslash-teken.

Als de tekenreeks ongeldig is, retourneert de functie PeerGroupSearchRecords de fout E_INVALIDARG. Een ongeldige reeks is een reeks die een '\'-teken (backslash) bevat, niet direct gevolgd door een *-teken (sterretje), een "?" (vraagteken) of een ander '\'-teken (backslash).