Megosztás a következőn keresztül:


Rekordkeresési lekérdezés formátuma

A PeerGroupSearchRecords függvény hívásához egy XML-lekérdezési sztringparaméter szükséges, amely a keresés alapfeltételeinek meghatározására szolgál. XML-sztringet a következő sémával alakíthat ki:

<?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> 

A rekordkeresés elsődleges eleme társkeresési, amely a társított séma egységes erőforrás-azonosítóját (URI) tartalmazza az xmlns attribútumban. Ha társkereső használ gyermekelemként, használhatja és, záradékot, és vagy gyermekelemként.

  • és – A és elem logikai AND műveletet hajt végre a nyitó és a záró címkék között található egy vagy több záradékon. Más , és vagy címkék lehetnek gyermekek, és a gyermek záradékok rekurzív eredményei szerepelnek a műveletben.

    Ha például olyan rekordot szeretne beszerezni, amely James Peters nevével egyenlő nevet tartalmaz, és egy 2003.02.28-nál nagyobb utolsó frissítést, vagy egy 2003.01.31-nél kisebb létrehozási dátumot, használja a következő XML-lekérdezési sztringet:

    <?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>
    
  • záradék – A záradék elem egy alapvető összehasonlító szabályt határoz meg, amely egy adott rekordattribútum értékét hasonlítja össze a nyitó és a záró címkék között található értékkel. A típus és összehasonlítani attribútumokat kell megadni, összehasonlítani az összehasonlító műveletet kell végrehajtani. Az XML-lekérdezési sztringben például egy olyan egyszerű keresésnek kell lennie, amely azt jelzi, hogy az összes egyező rekordnak társkonfigurált-értékkel kell rendelkeznie, amely james peters-sel egyenlő:

    <?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>
    

    Az általános típusú attribútumok közé tartozik int, sztringés dátum. A dátum attribútum lehet az https://www.w3.org/TR/NOTE-datetime.

    Az összehasonlítása attribútum értéke egyenlő, jegyzetelt, kisebb, nagyobb, alacsonyabb, és magasabb.

  • vagy – A vagy elem logikai VAGY műveletet hajt végre a nyitó és a záró címkék között található egy vagy több záradékon. Más vagy és és elemek lehetnek gyermekek, és a gyermek záradékok rekurzív eredményei szerepelnek a műveletben. Ha például olyan rekordot szeretne beszerezni, amely James Peters nevével megegyező nevet tartalmaz, vagy egy utolsó frissítést, amely 2003.01.31. és 2003.02.28. között van, használja a következő XML-lekérdezési sztringet:
<?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>

Az társviszony-létesítés utáni csomópontok első szintje csak egy elemet tartalmazhat. Ennek az elemnek a későbbi gyermekei azonban számos elemet tartalmazhatnak ugyanazon a szinten.

A következő keresési lekérdezés helytelen:

<?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>

A lekérdezés meghiúsul, mert a rendszer két értéket ad vissza az egyezéshez anélkül, hogy egy igaz/hamis értékre oldódjon fel, ami azt jelenti, hogy az egyik záradék a James Petersnek megfelelő rekord nevének lekérdezése, az AND művelet pedig a két összetevő záradékának felel meg. Az eredmény két egymásnak ellentmondó logikai igaz/hamis érték.

A James Peters nevével megegyező nevet tartalmazó összes rekord, valamint a 2003.01.31. és 2003.02.28. közötti utolsó frissítés beszerzéséhez helyezze a záradékot, és címkéket, amelyek azonos szinten vannak a és a címkék megnyitása és bezárása között. Az alábbi példa a sikeres lekérdezést mutatja be:

<?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>

Az alábbi lista a sikeres lekérdezés írásához szükséges egyéb konkrét információkat azonosítja:

  • A , és vagy címkék nem helyezhetők el a nyitó és záró záradék címkék között, mert ebben a konfigurációban azokat az érték részeként értelmezi, amely hibát vagy sikertelen egyezést eredményez.
  • Minden egyes - és- és - vagy nyitó- és zárócímkének tartalmaznia kell legalább egy vagy több gyermekcsomópontot.
  • Ebben a sémában nem engedélyezett nulla elemkészlet.

Rekordattribútumok

A Rekordattribútum sémahasználatával a felhasználó olyan rekordattrib-attribútumokat hozhat létre, amelyeket az attrib XML-attribútum egy záradékelemben megad. Az új rekord attribútumai a pszAttributesPEER_RECORD tagját egy XML-sztringre állítva a sémában megadott formátummal.

A társinfrastruktúra a következő attribútumneveket foglalja le:

  • peerlastmodifiedby
  • társkonfigurálható
  • peerlastmodificationtime
  • peerrecordid
  • peerrecordtype
  • peercreationtime
  • peerlastmodificationtime

Speciális karakterek

Bizonyos karakterek használhatók az egyező minták kifejezésére, vagy más speciális karakterek kivédésére. Ezeket a karaktereket az alábbi táblázat ismerteti.

Karakterminta Leírás
* A helyettesítő karakter. Ha ez a karakter egy záradékértékben jelenik meg, az bármilyen érték 0-n karakterével egyezik meg, beleértve a szóközt és a nonalphanumerikus karaktereket is. Például:
"<záradék attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
Ez a záradék az összes társkonfigurálással létrehozott értéket egy "James" utónévvel és egy "P" kezdetű vezetéknévvel egyezik meg.
\* Egy szökött csillag. Ez a sorozat egy csillag karakterrel egyezik.
? Az egy karakterből álló helyettesítő karakter. Ha ez a karakter egy záradékértékben jelenik meg, az egyetlen karakternek felel meg, beleértve a szóközt és a nemnalfanumerikus karaktereket is. Például:
"<záradék attrib="filename" type="string" compare="equal">data-0?.xml</záradék>"
Ez a záradék megegyezik fájlnév olyan értékekkel, mint a "data-01.xml" és a "data-0B.xml".
\? Egy szökött kérdőjel. Ez a sorozat egy kérdőjel karakterrel egyezik.
\\ Egy szökött fordított perjel. Ez a sorozat egyetlen fordított perjel karakterrel egyezik.

Ha a karaktersorozat érvénytelen, a PeerGroupSearchRecords függvény a E_INVALIDARGhibát adja vissza. Érvénytelen sorozat minden olyan sorozat, amely "\" (fordított perjel) karaktert tartalmaz, és nem követi azonnal a "*" (csillag) karaktert, a "?" karaktert. (kérdőjel) vagy egy másik "\" (fordított perjel) karakter.