3

次のようなxmlドキュメントが与えられた場合

<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>

XMLドキュメントがXMLUnitの要素Bでソートされていると主張する簡単な方法はありますか?

編集:特定のノードの XML タグの値を特定の順序にする必要がある場所を変更できないソフトウェアに奇妙な問題があります。テスト ハーネスで、他の検証の前にこの一連のルールを適用したいと考えています。

4

3 に答える 3

2

次の単純な XPath 1.0 式の値を使用します

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

于 2010-04-27T12:56:59.810 に答える
1

XPath の選択に基づいてアサーションを作成できます。

おそらく最も簡単な方法は、XPath 式を使用し/root/row/b、結果の型を要求してNODESETから、各結果ノードのテキストをList構造体にコピーすることです。そのリスト内のテキストが、メソッドで作成された「期待される」リストと等しいと断言できますArrays.asList()(Java を使用していると仮定しています)。

于 2010-04-26T21:35:28.640 に答える
1

XQuery を実行できる場合、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)

ここで、$x はドキュメントです。行が b の昇順の場合は true、そうでない場合は false

于 2010-04-27T06:33:54.570 に答える