REST 原生過濾器支援的過濾器條件

「可報告的 REST」服務實作者會將原生過濾器傳回的資訊最佳化。過濾器會在欄位引數中指定成 XPath 過濾器。

使用多層次過濾來擷取資訊

使用過濾器來限制要過濾之子元素所包含的 XML 元素。過濾器中的所有欄位都是母元素直接包含之 XML 元素的值。不過,您可以利用 XPath 語法,來擷取階層中更深層的元素。您可以使用下列方法來擷取特定資訊:
您可以在多個層次中指定過濾器。下列範例顯示使用欄位引數所傳回的 PRRequirement
fields=Project/Requirements/PRRequirement[Stability = 'High']/(FullTag|Priority|Status|TracesTo/Relationship[Suspect='true']/*)

這個過濾器條件會擷取特定製造商製造的設備,以及選取了所有可疑 TracesTo 關係的其他相關資訊。下列範例顯示過濾器的結果:

<PRRequirement>
<FullTag>PR1</FullTag>
<Priority>Medium</Priority>
<Status>Incorporated</Status>
<TracesTo>
<Relationship>
<Suspect>true</Suspect>
<RelationshipType>Traceability</RelationshipType>
<Direction>TracesTo</Direction>
<RelationshipID>{10C4D0CE-24CF-4C80-8167-E5A849FC821B}16{10C2D0CE-84CF-4C80-9166-E5A849FC821B}1RelationshipID>{10C2D0CE-84CE-4C80-9166-E5A849FC821B}16{10C2D0CE-84CF-4C80-9166-E5A849FC821B}1</RelationshipID>
<RelatedRequirement/>
</Relationship>
[… More matching relationships]
</TracesTo>
</PRRequirement>

使用多路徑設定來擷取資訊

您可以利用 XPath 語法,來擷取階層中更深層的值。不過,您只能針對要評估的過濾器提供一個值。如果您提供多個值,會將表示式視為未定義。例如,PRRequirement 有相關的文件。在綱目中這項表示式是定義成:

xs:element maxOccurs="1" name="Document" type="ReqDocument" minOccurs="0"

由於相關文件絕不會超過一份,因此可以評估表示式。如果沒有相關文件,就不符合。多路徑設定的欄位表示式如下:

fields=Project/Requirements/PRRequirement[Document/Extension=prd]/(*|Document/*

在過濾器中使用 XML 屬性

您可以在過濾器條件中使用 XML 屬性值來擷取資訊。下列範例顯示如何使用屬性:
fields=Project/Requirements/PRRequirement[attribute::Stability = 'High']/(FullTag|Priority|Status)
fields=Project/Requirements/PRRequirement[@Stability = 'High']/(FullTag|Priority|Status)
兩種屬性軸格式 attribute:: 和 @ 都支援。其 XML 結果相同,這是因為結果中不會包含 Stability。

意見