O implementador de serviço REST relatável otimiza as
informações que são retornadas pelo filtro nativo. O filtro é
especificado como um filtro XPath no argumento de campos.
Extraindo informações usando a filtragem de vários
níveis
Use o filtro para limitar os elementos XML que são
incluídos por elementos filhos que são filtrados. Todos os campos no
filtro são valores dos elementos XML que são diretamente contidos
pelo elemento-pai.
No entanto, você pode utilizar a sintaxe XPath
para recuperar elementos mais profundos na hierarquia. É possível
extrair informações específicas usando os seguintes métodos:
- Condições de filtro de vários níveis
- Condições de caminho de vários níveis
- Atributos XML
Os filtros podem ser especificados em diversos níveis. O
exemplo a seguir mostra Pré-requisito que é
retornado com o argumento de campos.
fields=Project/Requirements/PRRequirement[Stability
= 'High']/(FullTag|Priority|Status|TracesTo/Relationship[Suspect='true']/*).
Esta condição de filtro extrai os dispositivos fabricados por um
fabricante específico, juntamente com informações adicionais
selecionando todos os relacionamentos TracesTo
que são suspeitos. O exemplo a seguir mostra os resultados do filtro:
<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>
Extraindo informações usando a configuração de vários
caminhos
Você pode utilizar a sintaxe XPath para recuperar
valores que estão mais profundos na hierarquia.
No entanto, você pode
fornecer apenas um valor para o filtro para avaliação.
Se você
fornecer diversos valores, a expressão será considerada indefinida.
Por exemplo, PRRequirement tem um documento
relacionado. Essa expressão é definida no esquema como:
xs:element
maxOccurs="1" name="Document" type="ReqDocument" minOccurs="0".
Como nunca pode haver mais de um documento relacionado, a expressão
pode ser avaliada. Se não houver nenhum documento relacionado, não
haverá correspondência.
A expressão de campos para a configuração de
vários caminhos é:
fields=Project/Requirements/PRRequirement[Document/Extension=prd]/(*|Document/*.
Usando atributos XML em um filtro
Você pode
extrair informações usando os valores de atributos XML em uma condição
de filtro.
O exemplo a seguir mostra como os atributos são utilizados:
fields=Project/Requirements/PRRequirement[attribute::Stability
= 'High']/(FullTag|Priority|Status).
fields=Project/Requirements/PRRequirement[@Stability
= 'High']/(FullTag|Priority|Status).
Os formatos dos eixos de atributos attribute:: and
@ são suportados. Os resultados XML são idênticos, pois
Stability não está incluído nos resultados.