Implementator usługi REST możliwości raportowania optymalizuje
informacje zwracane przez filtr rodzimy. Filtr jest określony jako filtr XPath
w argumencie fields.
Wyodrębnianie informacji przy użyciu wielopoziomowego filtrowania
Użycie filtru pozwala ograniczyć elementy XML dołączone przez
filtrowane elementy potomne. Wszystkie pola w filtrze są wartościami elementów
XML zawartych bezpośrednio w elemencie nadrzędnym.
Można jednak użyć składni
XPath w celu pobrania elementów znajdujących się głębiej w hierarchii. Istnieje możliwość wyodrębnienia konkretnych informacji przy użyciu
następujących metod:
- Warunki filtru wielopoziomowego
- Warunki ścieżki wielopoziomowej
- Atrybuty XML
Filtry można określić na wielu poziomach. Poniższy przykład
przedstawia filtr PRRequirement zwracany z argumentem
fields.
fields=Project/Requirements/PRRequirement[Stability
= 'High']/(FullTag|Priority|Status|TracesTo/Relationship[Suspect='true']/*).
Ten
warunek filtru wyodrębnia urządzenia produkowane przez konkretnego producenta
razem z informacjami dodatkowymi, wybierając wszystkie relacje
TracesTo, które są podejrzane. W poniższym przykładzie
przedstawiono wyniki filtru:
<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>
[... więcej zgodnych relacji]
</TracesTo>
</PRRequirement>
Wyodrębnianie informacji przy użyciu ustawienia wielu
ścieżek
Do pobrania wartości znajdujących się głębiej w hierarchii
można użyć składni XPath.
Jednak do oceny dla filtru można podać tylko jedną wartość.
W przypadku podania wielu wartości wyrażenie jest traktowane jako
niezdefiniowane.
Na przykład filtr PRRequirement ma
powiązany dokument. To wyrażenie jest zdefiniowane w schemacie jako:
xs:element
maxOccurs="1" name="Document" type="ReqDocument" minOccurs="0".
Ponieważ
nigdy nie może być powiązany więcej niż jeden dokument, wyrażenie można
wartościować. Jeśli nie ma powiązanego dokumentu, nie ma dopasowania.
Wyrażenie fields dla ustawienia wielu ścieżek jest następujące:
fields=Project/Requirements/PRRequirement[Document/Extension=prd]/(*|Document/*.
Używanie atrybutów XML w filtrze
Informacje można
wyodrębnić, korzystając z wartości atrybutów XML w warunku filtru.
W poniższym przykładzie przedstawiono sposób użycia atrybutów:
fields=Project/Requirements/PRRequirement[attribute::Stability
= 'High']/(FullTag|Priority|Status).
fields=Project/Requirements/PRRequirement[@Stability
= 'High']/(FullTag|Priority|Status).
Obsługiwane są obie formy osi atrybutów, attribute:: i
@. Wyniki XML są identyczne, ponieważ wartość Stability nie jest
uwzględniana w tych wynikach.