Abfrageformat der Datensatzsuche
Ein Aufruf der PeerGroupSearchRecords--Funktion erfordert einen XML-Abfragezeichenfolgenparameter, der verwendet wird, um die grundlegenden Kriterien einer Suche zu bestimmen. Verwenden Sie das folgende Schema, um eine XML-Zeichenfolge zu formulieren:
<?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>
Elemente, die für eine Datensatzsuche verwendet werden sollen
Das primäre Element in einer Datensatzsuche ist Peersearch-, die den URI (Uniform Resource Identifier) des zugeordneten Schemas im xmlns-Attribut enthält. Wenn peersearch- als untergeordnetes Element verwendet wird, können Sie und, Klauselund oder als untergeordnete Elemente verwenden.
und – Das - und-Element führt einen logischen AND-Vorgang für eine oder mehrere Klauseln aus, die zwischen den öffnenden und schließenden Tags enthalten sind. Andere - und- und - oder-Tags können untergeordnete Elemente sein, und rekursive Ergebnisse ihrer untergeordneten Klauseln werden in den Vorgang einbezogen.
Wenn Sie beispielsweise einen Datensatz abrufen möchten, der einen Namen gleich James Peters enthält, und eine letzte Aktualisierung, die größer als 2/28/2003 ist, oder ein Erstellungsdatum, das kleiner als 1.31.2003 ist, verwenden Sie die folgende XML-Abfragezeichenfolge:
<?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>
Klausel – Die Klausel Element gibt eine grundlegende Vergleichsregel an, die den Wert eines bestimmten Datensatzattributes mit dem Wert vergleicht, der zwischen den öffnenden und schließenden Tags enthalten ist. Der Typ und vergleichen Attribute müssen bereitgestellt werden, Vergleich den auszuführenden Vergleichsvorgang angibt. Eine einfache Suche, die angibt, dass alle übereinstimmenden Datensätze einen peercreatorid Wert aufweisen müssen, der mit James Peters übereinstimmt, wird in der XML-Abfragezeichenfolge wie folgt angezeigt:
<?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>
Allgemeine Typ- Attribute umfassen int, Zeichenfolgeund Datum. Das Datum Attributs kann eines der Standarddatumsformate sein, die unter https://www.w3.org/TR/NOTE-datetimebeschrieben werden.
Werte für das attribut compare sind gleich, notequal, weniger, größer, lessorequalund greaterorequal.
- oder – Das - oder-Element führt einen logischen OR-Vorgang für eine oder mehrere Klauseln aus, die zwischen den öffnenden und schließenden Tags enthalten sind. Andere oder und und Elemente können untergeordnete Elemente sein, und rekursive Ergebnisse der untergeordneten Klauseln werden in den Vorgang eingeschlossen. Wenn Sie beispielsweise einen Datensatz abrufen möchten, der einen Namen gleich James Peters enthält, oder eine letzte Aktualisierung, die zwischen 1.31.2003 und 2.28.2003 liegt, verwenden Sie die folgende XML-Abfragezeichenfolge:
<?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>
Weitere Informationen zu einer Datensatzsuche
Die erste Ebene von Knoten, nachdem Peersearch- nur ein Element haben kann. Nachfolgende untergeordnete Elemente dieses Elements können jedoch viele Elemente auf derselben Ebene aufweisen.
Die folgende Suchabfrage ist falsch:
<?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>
Die Abfrage schlägt fehl, da zwei Werte für die Übereinstimmung zurückgegeben werden, ohne in einen wahr/falsch-Wert aufgelöst zu werden. Dies bedeutet, dass eine Klausel eine Abfrage für den Namen eines Datensatzes ist, der James Peters entspricht, und der AND-Vorgang entspricht den beiden Komponentenklauseln. Das Ergebnis ist zwei logische wahr/falsch Werte, die widersprüchlich sind.
Wenn Sie alle Datensätze abrufen möchten, die einen Namen wie James Peters enthalten, und eine letzte Aktualisierung, die zwischen 1.31.2003 und 2.28.2003 liegt, platzieren Sie die Klausel und und Tags, die sich auf derselben Ebene befinden zwischen öffnenden und schließenden und Tags. Das folgende Beispiel zeigt die erfolgreiche Abfrage:
<?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>
In der folgenden Liste werden andere spezifische Informationen identifiziert, die Sie zum Schreiben einer erfolgreichen Abfrage kennen müssen:
- Die tags und und oder können nicht zwischen dem Öffnen und Schließen Klausel Tags gefunden werden, da sie in dieser Konfiguration als Teil des zu abgleichenden Werts interpretiert werden, was zu einem Fehler oder einer fehlgeschlagenen Übereinstimmung führt.
- Jedes Paar von und und oder öffnenden und schließenden Tags muss mindestens einen untergeordneten Knoten enthalten.
- Ein Nullsatz von Elementen ist in diesem Schema nicht zulässig.
Datensatzattribute
Mithilfe des Record Attribute Schemakann ein Benutzer Datensatzattribute erstellen, die das attrib XML-Attribut in einem Klauselelement angibt. Attribute für einen neuen Datensatz werden hinzugefügt, indem das pszAttributes Member von PEER_RECORD mithilfe des im Schema angegebenen Formats auf eine XML-Zeichenfolge festgelegt wird.
Die Peer-Infrastruktur behält sich die folgenden Attributnamen vor:
- peerlastmodifiedby
- peercreatorid
- peerlastmodificationtime
- peerrecordid-
- peerrecordtype-
- Peercreationtime-
- peerlastmodificationtime
Sonderzeichen
Bestimmte Zeichen können verwendet werden, um übereinstimmende Muster auszudrücken oder andere Sonderzeichen zu escapen. Diese Zeichen werden in der folgenden Tabelle beschrieben.
Zeichenmuster | Beschreibung |
---|---|
* | Das Wildcardzeichen. Wenn dieses Zeichen in einem Klauselwert gefunden wird, entspricht es 0-n Zeichen eines beliebigen Werts, einschließlich Leerzeichen und nichtalphanumerischen Zeichen. Zum Beispiel: "<Klausel attrib="peercreatorid" type="string" compare="equal">James P*</clause>" Diese Klausel entspricht allen peercreatorid- Werten mit einem Vornamen von "James" und einem Nachnamen, der mit "P" beginnt. |
\* | Ein escapefähiges Sternchen. Diese Sequenz entspricht einem Sternchen. |
? | Das einstellige Wildcardzeichen. Wenn dieses Zeichen in einem Klauselwert gefunden wird, entspricht es jedem einzelnen Zeichen, einschließlich Leerzeichen und nichtalphanumerischen Zeichen. Zum Beispiel: "<Klausel attrib="filename" type="string" compare="equal">data-0?.xml</clause>" Diese Klausel entspricht Dateinamen Werten wie "data-01.xml" und "data-0B.xml". |
\? | Ein Escapezeichen. Diese Sequenz entspricht einem Fragezeichenzeichen. |
\\ | Ein escaped backslash. Diese Sequenz entspricht einem einzelnen umgekehrten Schrägstrich. |
Wenn die Zeichenfolge ungültig ist, gibt die PeerGroupSearchRecords--Funktion den Fehler E_INVALIDARGzurück. Eine ungültige Sequenz ist jede Sequenz, die ein "\"-Zeichen (umgekehrter Schrägstrich) enthält, nicht unmittelbar gefolgt von einem "*"-Zeichen (Sternchen), einem "?" (Fragezeichen) oder ein anderes "\"-Zeichen (umgekehrter Schrägstrich).