Pregunta

Dado un documento XML como

<root>
  <row>
    <a>2</a>
    <b>1</b>
    <c>8</c>
  </row>
  <row>
    <b>5</b>
    <a>2</a>
    <c>8</c>
  </row>
  <row>
    <a>2</a>
    <c>8</c>
    <b>6</b>
  </row>
</root>

¿Hay una manera fácil de afirmar que el documento XML se ordena el elemento B en XMLUnit

Editar: Tengo un extraño problema con una pieza de software que no puedo cambiar, donde el valor de las etiquetas XML en cualquier necesidad de nodo dado para estar en un orden específico. Me gustaría que para mi instrumento de prueba para hacer cumplir este conjunto de reglas antes de cualquier otra validación.

¿Fue útil?

Solución

Usar el valor de la siguiente expresión simple XPath 1.0 :

not(//b[. > following::b])

Otros consejos

Se puede construir una afirmación en torno a una selección de XPath.

Probablemente, la forma más sencilla sería utilizar la /root/row/b expresión XPath, solicitar el tipo de resultado NODESET, luego copia el texto de cada nodo de resultado en una estructura List. Se puede afirmar que el texto en esa lista es igual a una lista de "espera" creado con el método Arrays.asList() (estoy asumiendo que usted está utilizando Java).

Si se puede ejecutar XQuery, entonces la afirmación de XQuery:

every $i in (1 to count ($x/row) - 1)
satisfies 
   let $j :=  $i + 1   
   return number($x/row[$i]/b) <= number($x/row[$j]/b)

donde $ es el documento, es x cierto si las filas están en orden ascendente de b, falso en caso contrario

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top