El implementador del servicio REST notificable optimiza la información devuelta por el filtro nativo. El filtro se especifica como un filtro de XPath en el argumento fields.
Extraer información mediante filtrado multinivel
Utilice el filtro para limitar los elementos XML incluidos por los
elementos hijo que se filtran. Todos los campos del filtro son valores de los elementos XML que están contenidos directamente en el elemento padre.
Sin
embargo, puede utilizar la sintaxis XPath para recuperar elementos a mayor profundidad en la jerarquía. Puede extraer información específica
mediante los
métodos siguientes :
- Condiciones de filtro multinivel
- Condiciones de vía de acceso multinivel
- Atributos XML
Los filtros pueden especificarse en varios niveles. El ejemplo siguiente muestra el requisito PR (PRRequirement) que se
devuelve con el argumento fields.
fields=Project/Requirements/PRRequirement[Stability
= 'High']/(FullTag|Priority|Status|TracesTo/Relationship[Suspect='true']/*).
Esta condición de filtro extrae los aparatos fabricados por un
fabricante específico, junto con información adicional seleccionando todas las relaciones TracesTo sospechosas. El ejemplo siguiente
muestra los resultados del 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>
Extraer información mediante un valor multivía de acceso
Puede utilizar la sintaxis XPath para recuperar valores a
mayor profundidad en la jerarquía.
Sin embargo, sólo puede suministrar un valor para que el filtro lo evalúe.
Si suministra varios valores, la
expresión se
considerará sin definir.
Por ejemplo, PRRequirement tiene un documento relacionado. Esta expresión se define en el esquema como:
xs:element
maxOccurs="1" name="Document" type="ReqDocument" minOccurs="0".
Puesto que no puede haber más de un documento relacionado, la expresión
puede evaluarse. Si no hay ningún documento relacionado, no hay coincidencia.
La expresión fields para el valor multivía de acceso es:
fields=Project/Requirements/PRRequirement[Document/Extension=prd]/(*|Document/*.
Utilizar atributos XML en un filtro
Puede extraer información utilizando los valores de atributo XML en una condición de filtro.
El
ejemplo siguiente muestra cómo se utilizan los atributos:
fields=Project/Requirements/PRRequirement[attribute::Stability
= 'High']/(FullTag|Priority|Status).
fields=Project/Requirements/PRRequirement[@Stability
= 'High']/(FullTag|Priority|Status).
Ambas formas del eje de atributo attribute:: y @ están soportadas. Los resultados XML son idénticos, porque Stability no se
incluye en los resultados.