Partilhar via


Formato de consulta de pesquisa de registros

Uma chamada para a funçãoPeerGroupSearchRecords requer um parâmetro de cadeia de caracteres de consulta XML que é usado para determinar os critérios básicos de uma pesquisa. Use o esquema a seguir para formular uma cadeia de caracteres 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> 

O elemento primário em uma pesquisa de registro é peersearch , que contém o URI (Uniform Resource Identifier) do esquema associado no atributo xmlns. Quando de pesquisa de pares é usado como um elemento filho, você pode usar e, cláusulae ou como elementos filho.

  • e - O elemento e executa uma operação lógica AND em uma ou mais cláusulas contidas entre as tags de abertura e fechamento. Outros e e ou tags podem ser filhos, e os resultados recursivos de suas cláusulas filho são incluídos na operação.

    Por exemplo, se você quiser obter um registro que contenha um nome igual a James Peters e uma última atualização maior que 28/02/2003 ou uma data de criação menor que 31/01/2003, use a seguinte cadeia de caracteres de consulta XML:

    <?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>
    
  • cláusula - A cláusula elemento especifica uma regra comparativa básica que compara o valor de um atributo de registro específico com o valor contido entre as tags de abertura e fechamento. O tipo e comparar atributos devem ser fornecidos comparar indica a operação de comparação a ser executada. Por exemplo, uma pesquisa simples que indica que todos os registros correspondentes devem ter um valor de peercreatorid igual a James Peters aparece na cadeia de caracteres de consulta XML da seguinte forma:

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

    Os atributos comuns tipo incluem int, stringe date. O atributo data pode ser um dos formatos de data padrão descritos em https://www.w3.org/TR/NOTE-datetime.

    Os valores para o comparar atributo são igual, notequal, menos, maior, locador igual, e greaterorequal.

  • ou - O elemento ou executa uma operação lógica OU em uma ou mais cláusulas contidas entre as tags de abertura e fechamento. Outros elementos ou e e podem ser filhos, e os resultados recursivos das cláusulas filho são incluídos na operação. Por exemplo, se você quiser obter um registro que contenha um nome igual a James Peters ou uma última atualização entre 31/01/2003 e 28/02/2003, use a seguinte cadeia de caracteres de consulta XML:
<?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>

O primeiro nível de nós após de pesquisa de pares pode ter apenas um elemento. No entanto, os filhos subsequentes desse elemento podem ter muitos elementos no mesmo nível.

A seguinte consulta de pesquisa está incorreta:

<?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 consulta falha porque dois valores são retornados para a correspondência sem serem resolvidos em um valor verdadeiro/falso, o que significa que uma cláusula é uma consulta para o nome de um registro que é igual a James Peters, e a operação AND corresponde às duas cláusulas de componente. O resultado são dois valores lógicos verdadeiro/falso que são contraditórios.

Para obter todos os registros que contenham um nome igual a James Peters e uma última atualização entre 31/01/2003 e 28/02/2003, coloque a cláusula e e tags que estejam no mesmo nível entre abrir e fechar e tags. O exemplo a seguir mostra a consulta bem-sucedida:

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

A lista a seguir identifica outras informações específicas que você deve saber para escrever uma consulta bem-sucedida:

  • As tags e e ou não podem ser localizadas entre abrir e fechar cláusula tags porque, nessa configuração, elas são interpretadas como parte do valor a ser correspondido, o que resulta em um erro ou uma correspondência com falha.
  • Cada par de e e ou tags de abertura e fechamento deve incluir pelo menos um ou mais nós filho.
  • Um conjunto zero de elementos não é permitido neste esquema.

Atributos de registro

Usando o Record Attribute Schema, um usuário pode criar atributos de registro que o atributo attrib XML em um elemento de cláusula especifica. Os atributos para um novo registro são adicionados definindo o pszAttributes membro de PEER_RECORD para uma cadeia de caracteres XML usando o formato especificado no esquema.

A infraestrutura de mesmo nível reserva os seguintes nomes de atributos:

  • peerlastmodifiedby
  • PeerCreatorID
  • peerlastmodificationtime
  • peerrecordid
  • peerrecordtype
  • peercreationtime
  • peerlastmodificationtime

Caracteres especiais

Certos caracteres podem ser usados para expressar padrões correspondentes ou para escapar de outros caracteres especiais. Esses caracteres são descritos na tabela abaixo.

Padrão de caracteres Descrição
* O caractere curinga. Quando esse caractere é encontrado em um valor de cláusula, ele corresponde a 0-n caracteres de qualquer valor, incluindo espaço em branco e caracteres não alfanuméricos. Por exemplo:
"<cláusula attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
Esta cláusula corresponde a todos os valores de peercreatorid com um primeiro nome de "James" e um sobrenome começando com "P".
\* Um asterisco escapado. Esta sequência corresponde a um caractere de asterisco.
? O caractere curinga de caractere único. Quando esse caractere é encontrado em um valor de cláusula, ele corresponde a qualquer caractere único, incluindo espaço em branco e caracteres não alfanuméricos. Por exemplo:
"<cláusula attrib="filename" type="string" compare="equal">data-0?.xml</cláusula>"
Esta cláusula corresponde nome de arquivo valores como "data-01.xml" e "data-0B.xml".
\? Um ponto de interrogação escapado. Esta sequência corresponde a um caractere de ponto de interrogação.
\\ Uma retrocesso escapada. Esta sequência corresponde a um único caractere de barra invertida.

Se a sequência de caracteres não for válida, a funçãoPeerGroupSearchRecords retornará o erro E_INVALIDARG. Uma sequência inválida é qualquer sequência que contenha um caractere "\" (barra invertida) não imediatamente seguido por um caractere "*" (asterisco), um "?" caractere (ponto de interrogação) ou outro caractere "\" (barra invertida).