共用方式為


記錄搜尋查詢格式

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

記錄搜尋中的主要元素是 peersearch,其中包含 xmlns 屬性中相關聯架構的統一資源識別項 (URI) 。 當 peersearch 當做子專案使用時,您可以使用 子句 作為子項目。

  • - 元素會在開頭和結束記號之間包含的一或多個子句上執行邏輯 AND 運算。 其他和 或標記可以是子系,而且其子句的遞迴結果會包含在作業中。

    例如,如果您想要取得包含名稱等於 James Peters 的記錄,以及大於 2/28/2003 的上次更新,或小於 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>
    

    常見的 類型 屬性包括 intstringdatedate屬性可以是 在 https://www.w3.org/TR/NOTE-datetime 中所述的標準日期格式之一。

    compare屬性的值相等notequal、less、greaterlessorequalgreaterorequal

  • - 元素會在開頭和結尾標籤之間所包含的一或多個子句上執行邏輯 OR 運算。 其他和 和 元素可以是子系,而子子句的遞迴結果會包含在作業中。 例如,如果您想要取得包含名稱等於 James Peters 的記錄,或 2003/1/31 和 2/28/2003 之間的上次更新,請使用下列 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 和 2/28/2003 之間的最後一個更新,請將子句和 和標記放在開啟和結尾標記之間的相同層級。 下列範例顯示成功的查詢:

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

下列清單會識別您必須知道才能撰寫成功查詢的其他特定資訊:

  • 和 或標記不能位於開頭和結尾子句標記之間,因為在該組態中,它們會解譯為要比對的值一部分,這會導致錯誤或失敗的相符專案。
  • 每一組 開啟和結束記號都必須包含至少一或多個子節點。
  • 此架構中不允許零組專案。

記錄屬性

藉由使用 記錄屬性架構,使用者可以建立子句元素中 attrib XML 屬性所指定的記錄屬性。 使用架構中指定的格式,將PEER_RECORDpszAttributes成員設定為 XML 字串,以新增新記錄的屬性。

對等基礎結構會保留下列屬性名稱:

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

特殊字元

某些字元可用來表示比對模式,或逸出其他特殊字元。 下表說明這些字元。

字元模式 描述
* 萬用字元。 在子句值中遇到這個字元時,它會比對任何值的 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。 不正確序列是包含 「\」 (反斜線) 字元的任何序列,其後面不緊接著 「*」 (星號) 字元、「?」 (問號) 字元,或另一個 「\」 (反斜線) 字元。