2017-08-30 1 views
0

私はこの状態を試みていますが、他の方法で常に終了します。おかげxQuery IF条件が正しく動作しません

if ($orderLine[osm:ProductSpecification/text()="X"] and osm:ExtensibleAttributes[osm:Name = "Y" or osm:Name = "Z"] and osm:NewValue/text() = "A") 
      then 
       <AccessType>X</AccessType> 
      else 
       <AccessType>{$attribute/osm:NewValue/text()}</AccessType> 
      ) 
+0

明らかに私たちは、あなたがソースドキュメントを見ることなく、これをデバッグする、または$のOrderLineに何が含まれているかを知ることができます方法はありません。私たちはマジシャンではありません。 –

答えて

1

私はフィルターの有効範囲を変更する問題を解決した:

if ($orderLine[osm:ProductSpecification/text()="X" and osm:ExtensibleAttributes[osm:Name = "Y" or osm:Name = "Z"] and osm:NewValue/text() = "A" ]]) 
      then 
       <AccessType>X</AccessType> 
      else 
       <AccessType>{$attribute/osm:NewValue/text()}</AccessType> 
      ) 
+2

場合によっては、文書が既知であるかスキーマによって制約されている場合、等価性テストの両側が単一項目であることがわかります。後者は二重実在の定量化(「一致する二つの項目が存在する」)を含むため、 'eq'(値比較)を' = '(一般比較)よりも効率的に使用します。スマートエンジンは自動的に最適化されますが、インプットにどのような情報が含まれているかに限ります。 –

関連する問題