Реализация службы REST с возможностью создания отчета
оптимизирует информацию, которая возвращается внутренним фильтром. Фильтр указывается как фильтр XPath в аргументе поля.
Извлечение информации с помощью
многоуровневой фильтрации
Фильтр можно использовать для ограничения элементов XML,
включаемых дочерними элементами, которые фильтруются. Все поля в
фильтре являются значениями элементов XML, непосредственно
содержащимися в родительском элементе.
Однако, можно использовать
синтаксис XPath для извлечения элементов, которые находятся более
глубоко в иерархии. Можно извлечь определенную
информацию с помощью следующих методов:
- Условия многоуровневого фильтра
- Условия многоуровневого пути
- Атрибуты XML
Фильтры могут быть указаны на нескольких уровнях. Следующий
пример показывает 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
не включен в результаты.