다음을 통해 공유


레코드 검색 쿼리 형식

PeerGroupSearchRecords 함수를 호출하려면 검색의 기본 조건을 결정하는 데 사용되는 XML 쿼리 문자열 매개 변수가 필요합니다. 다음 스키마를 사용하여 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> 

레코드 검색의 기본 요소는 xmlns 특성에 연결된 스키마의 URI(Uniform Resource Identifier)를 포함하는 peersearch입니다. peersearch가 자식 요소로 사용되는 경우 , 또는 를 자식 요소로 사용할 수 있습니다.

  • - 요소는 여는 태그와 닫는 태그 사이에 포함된 하나 이상의 절에 대해 논리적 AND 연산을 수행합니다. 기타 및 또는 태그는 자식일 수 있으며 자식 절의 재귀 결과가 작업에 포함됩니다.

    예를 들어 James Peters와 같은 이름과 2003년 2월 28일보다 큰 마지막 업데이트 또는 2003년 1월 31일 미만의 생성 날짜를 포함하는 레코드를 가져오려면 다음 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>
    
  • clause - 요소는 특정 레코드 특성의 값을 여는 태그와 닫는 태그 사이에 포함된 값과 비교하는 기본 비교 규칙을 지정합니다. 형식비교 특성을 제공해야 합니다. 비교는 수행할 비교 작업을 나타냅니다. 예를 들어 일치하는 모든 레코드에 James Peters와 같은 peercreatorid 값이 있어야 했음을 나타내는 간단한 검색이 XML 쿼리 문자열에 다음과 같이 표시됩니다.

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

    일반적인 형식 특성에는 int, stringdate가 포함됩니다. date 특성은 에 https://www.w3.org/TR/NOTE-datetime설명된 표준 날짜 형식 중 하나일 수 있습니다.

    compare 특성의 값은 음, notequal, less, greater, lessorequalgreaterorequal입니다.

  • 또는 - 또는 요소는 여는 태그와 닫는 태그 사이에 포함된 하나 이상의 절에 대해 논리적 OR 연산을 수행합니다. 기타 또는 요소는 자식일 수 있으며 자식 절의 재귀 결과가 작업에 포함됩니다. 예를 들어 James Peters와 같은 이름이 포함된 레코드 또는 2003년 1월 31일부터 2003년 2월 28일 사이의 마지막 업데이트를 가져오려면 다음 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>

peersearch 이후의 첫 번째 노드 수준에는 하나의 요소만 있을 수 있습니다. 그러나 해당 요소의 후속 자식에는 동일한 수준에서 많은 요소가 있을 수 있습니다.

다음 검색 쿼리가 올바르지 않습니다.

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

하나의 true/false 값으로 확인되지 않고 일치 항목에 대해 두 값이 반환되므로 쿼리가 실패합니다. 즉, 하나의 절은 James Peters와 같은 레코드 이름에 대한 쿼리이고 AND 작업은 두 구성 요소 절과 일치합니다. 결과는 모순되는 두 개의 논리적 true/false 값입니다.

James Peters와 같은 이름과 2003년 1월 31일과 2003년 2월 28일 사이의 마지막 업데이트를 포함하는 모든 레코드를 가져오려면 및 및태그를 여는 것과 닫는 태그 사이에 같은 수준에 배치합니다. 다음 예제에서는 성공적인 쿼리를 보여줍니다.

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

다음 목록에서는 성공적인 쿼리를 작성하기 위해 알아야 하는 기타 특정 정보를 식별합니다.

  • 또는 태그는 여는 절 태그와 닫는 태그 사이에 위치할 수 없습니다. 이 태그는 해당 구성에서 일치시킬 값의 일부로 해석되므로 오류 또는 일치 실패가 발생합니다.
  • 및 및또는 여는 태그의 각 쌍에는 하나 이상의 자식 노드가 포함되어야 합니다.
  • 이 스키마에는 0개 요소 집합이 허용되지 않습니다.

레코드 특성

사용자는 Record Attribute 스키마를 사용하여 절 요소에서 attrib XML 특성이 지정하는 레코드 특성을 만들 수 있습니다. 새 레코드의 특성은 스키마에 지정된 형식을 사용하여 PEER_RECORDpszAttributes 멤버를 XML 문자열로 설정하여 추가됩니다.

피어 인프라는 다음 특성 이름을 예약합니다.

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

특수 문자

특정 문자를 사용하여 일치하는 패턴을 표현하거나 다른 특수 문자를 이스케이프할 수 있습니다. 이러한 문자는 아래 표에 설명되어 있습니다.

문자 패턴 Description
* 와일드카드 문자입니다. 절 값에서 이 문자가 발견되면 공백 및 무수 문자를 포함하여 모든 값의 0-n 문자와 일치합니다. 예:
"<clause attrib="peercreatorid" type="string" compare="equal">James P*</clause>"
이 절은 모든 peercreatorid 값과 "James"의 이름과 "P"로 시작하는 성을 일치합니다.
\* 이스케이프된 별표입니다. 이 시퀀스는 별표 문자와 일치합니다.
? 단일 문자 와일드카드 문자입니다. 절 값에서 이 문자가 발견되면 공백 및 무수 문자를 비롯한 모든 단일 문자와 일치합니다. 예를 들어:
"<clause attrib="filename" type="string" compare="equal">data-0?.xml</clause>"
이 절은 "data-01.xml" 및 "data-0B.xml"과 같은 파일 이름 값과 일치합니다.
\? 이스케이프된 물음표입니다. 이 시퀀스는 물음표 문자와 일치합니다.
\\ 이스케이프된 백슬래시입니다. 이 시퀀스는 단일 백슬래시 문자와 일치합니다.

문자 시퀀스가 유효하지 않으면 PeerGroupSearchRecords 함수는 오류 E_INVALIDARG 반환합니다. 잘못된 시퀀스는 "\"(백슬래시) 문자 뒤에 "*"(별표) 문자 "?"가 바로 뒤에 표시되지 않는 시퀀스입니다. (물음표) 문자 또는 다른 "\"(백슬래시) 문자입니다.