Formato query di ricerca record
Una chiamata alla funzione PeerGroupSearchRecords richiede un parametro di stringa di query XML utilizzato per determinare i criteri di base di una ricerca. Usare lo schema seguente per formulare una stringa XML:
<?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>
Elementi da utilizzare per una ricerca di record
L'elemento primario in una ricerca di record è peersearch, che contiene l'URI (Uniform Resource Identifier) dello schema associato nell'attributo xmlns. Quando peersearch viene usato come elemento figlio, è possibile usare e, clausolae o come elementi figlio.
e: l'elemento e esegue un'operazione AND logica su una o più clausole contenute tra i tag di apertura e chiusura. Altri tag e e o possono essere figlio e i risultati ricorsivi delle clausole figlio vengono inclusi nell'operazione.
Ad esempio, se si desidera ottenere un record contenente un nome uguale a James Peters e un ultimo aggiornamento maggiore di 2/28/2003 o una data di creazione minore di 1/31/2003, utilizzare la stringa di query XML seguente:
<?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>
clausola: la clausola elemento specifica una regola comparativa di base che confronta il valore di un attributo record specifico con il valore contenuto tra i tag di apertura e chiusura. Il tipo e confrontare gli attributi devono essere forniti confrontare indica l'operazione di confronto da eseguire. Ad esempio, una ricerca semplice che indica che tutti i record corrispondenti devono avere un peercreatorid valore uguale a James Peters viene visualizzato nella stringa di query XML come segue:
<?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>
Gli attributi comuni di tipo includono int, stringae data. L'attributo data può essere uno dei formati di data standard descritti in https://www.w3.org/TR/NOTE-datetime.
I valori per l'attributo confronto di sono uguali, notequal, meno, maggiore, minoree greaterorequal.
- o: l'elemento o esegue un'operazione OR logica su una o più clausole contenute tra i tag di apertura e chiusura. Altri elementi o e e possono essere elementi figlio e i risultati ricorsivi delle clausole figlio sono inclusi nell'operazione. Ad esempio, se si desidera ottenere un record contenente un nome uguale a James Peters o un ultimo aggiornamento compreso tra il 31/1/31/2003 e il 2/28/2003, usare la stringa di query XML seguente:
<?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>
Altre informazioni su una ricerca di record
Il primo livello di nodi dopo peersearch può avere un solo elemento. Tuttavia, gli elementi figlio successivi di tale elemento possono avere molti elementi allo stesso livello.
La query di ricerca seguente non è corretta:
<?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>
La query ha esito negativo perché vengono restituiti due valori per la corrispondenza senza essere risolti in un valore true/false, ovvero una clausola è una query per il nome di un record uguale a James Peters e l'operazione AND corrisponde alle due clausole del componente. Il risultato è costituito da due valori true/false logici che sono contraddittori.
Per ottenere tutti i record che contengono un nome uguale a James Peters e un ultimo aggiornamento compreso tra 1/31/2003 e 2/28/2003, inserire la clausola e e tag che si trovano allo stesso livello tra tag di apertura e chiusura e. L'esempio seguente mostra la query con esito positivo:
<?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>
L'elenco seguente identifica altre informazioni specifiche che è necessario conoscere per scrivere una query con esito positivo:
- I tag e e o non possono trovarsi tra la clausola di apertura e chiusura tag perché, in tale configurazione, vengono interpretati come parte del valore in base a cui trovare una corrispondenza, che genera un errore o una corrispondenza non riuscita.
- Ogni coppia di tag e e o di apertura e chiusura deve includere almeno uno o più nodi figlio.
- Uno zero set di elementi non è consentito in questo schema.
Attributi record
Usando lo schema degli attributi di record , un utente può creare attributi di record specificati dall'attributo attrib XML in un elemento della clausola. Gli attributi per un nuovo record vengono aggiunti impostando il pszAttributes membro di PEER_RECORD su una stringa XML usando il formato specificato nello schema.
L'infrastruttura peer riserva i nomi di attributo seguenti:
- peerlastmodifiedby
- peercreatorid
- peerlastmodificationtime
- peerrecordid
- peerrecordtype
- peercreationtime
- peerlastmodificationtime
Caratteri speciali
Alcuni caratteri possono essere usati per esprimere modelli di corrispondenza o per eseguire l'escape di altri caratteri speciali. Questi caratteri sono descritti nella tabella seguente.
Motivo carattere | Descrizione |
---|---|
* | Carattere jolly. Quando questo carattere viene rilevato in un valore di clausola, corrisponde a 0-n caratteri di qualsiasi valore, inclusi spazi vuoti e caratteri non alfanumerici. Per esempio: "<clausola attrib="peercreatorid" type="string" compare="equal">James P*</clause>" Questa clausola corrisponde a tutti i valori peercreatorid con un nome "James" e un cognome che inizia con "P". |
\* | Asterisco preceduto da un escape. Questa sequenza corrisponde a un carattere asterisco. |
? | Carattere jolly a carattere singolo. Quando questo carattere viene rilevato in un valore di clausola, corrisponde a qualsiasi singolo carattere, inclusi spazi vuoti e caratteri non alfanumerici. Per esempio: "<clausola attrib="filename" type="string" compare="equal">data-0?.xml</clause>" Questa clausola corrisponde valori come "data-01.xml" e "data-0B.xml". |
\? | Punto interrogativo preceduto da escape. Questa sequenza corrisponde a un carattere punto interrogativo. |
\\ | Barra rovesciata di escape. Questa sequenza corrisponde a un singolo carattere barra rovesciata. |
Se la sequenza di caratteri non è valida, la funzionePeerGroupSearchRecordsrestituisce l'errore E_INVALIDARG. Una sequenza non valida è una sequenza che contiene un carattere "\" (barra rovesciata) non immediatamente seguita da un carattere "*" (asterisco), un carattere "?" (punto interrogativo) carattere o un altro carattere "\" (barra rovesciata).