Условия фильтра, поддерживаемые внутренними фильтрами 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>
[… Другие соответствующие отношении]
</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 не включен в результаты.

Комментарии