私はJAXプロジェクトでCLiXMLとともにXPATH 1.0パーサを使用していますが、CLiXML制約ルールファイルをセットアップしようとしています。重複したXML要素名を見つける(変数付きのxPath)
特定の子の下に重複する要素名がある場合は、エラーを表示したいと思います。例えば
<parentNode version="1">
<childA version="1">
<ignoredChild/>
</childA>
<childB version="1">
<ignoredChild/>
</childB>
<childC version="4">
<ignoredChild/>
</childC>
<childA version="2">
<ignoredChild/>
</childA>
<childD version="6">
<ignoredChild/>
</childD>
</parentNode>
childAが複数回表示されますので、私はこのことについて、エラーが表示されるでしょう。
注:要素の内部属性または子要素ではなく、要素名を「チェック/カウント」したいだけです。
私.clxルール内のコードがあり、私が試したことファイル:
<forall var="elem1" in=".//parentNode/*">
<equal op1="count(.//parentNode/$elem1)" op2="1"/>
</forall>
しかし、それは動作しません、私はエラーを取得する:
Caused by: class org.jaxen.saxpath.XPathSyntaxException: count(.//PLC-Mapping/*/$classCount: 23: Expected one of '.', '..', '@', '*', <QName>
私はコードをしたいと各子名をチェックし、子名の名前で別のxPathクエリを実行します。カウントが1を超える場合、エラーが発生します。
アイデア?
私は自分の質問を更新しましたが、わかりませんでした。 Javaでカスタムの「制約」チェックを実行したくないので、自分の.CLXファイルに設定したいと思います。 – dan2k3k4
@ Dan2k3k4申し訳ありませんが、すぐにはい/いいえの回答を返す明示的なXPath式はありません。 –