悪夢からXMLデータベースにアクセスする最近の試みで、私は非常に近づきました。テストデータベースを使用して、実際に成功しました。ただし、BaseXサンプルデータベースではなく、実際にアクセスしようとしているデータベースに適用すると、XMLファイルに関する有効な苦情である特別なブランドのエラーが発生します。
http://basex.org/products/live-demo/経由
doc('test'):=
<item>
<item_number>1171270</item_number>
<seller_info>
<seller_company_id>6356</seller_company_id>
<seller_rating>C31</seller_rating>
<seller_rating>T150 hr.</seller_rating>
</seller_info>
<product_info>
<unit>2022</unit>
<sinfo>55 cases</sinfo>
<sinfo>Yu-gi-oh trading card pack</sinfo>
<sinfo>.45kg per unit</sinfo>
<sinfo>24.7500kg shipment</sinfo>
</product_info>
<product_info>
<unit>9291</unit>
<sinfo>7 units</sinfo>
<sinfo>Naruto, Classic, action figure</sinfo>
<sinfo>1.8kg per unit</sinfo>
<sinfo>12.6kg shipment</sinfo>
</product_info>
</item>
0:独自のクエリを作成します...:=
let $doc := doc('test')
for $v in $doc//item
where contains($v/product_info/unit,'9291')
return
$v/seller_info/seller_company_id
戻り値:
Error:
Stopped at line 3, column 39: [XPTY0004] Single item expected, (element unit { ... }, element unit { ... }) found.
このような問題に遭遇することを予期していなかったとは言えません。残念ながら、私はXMLドキュメントをフォーマットしませんでした(他の誰かがフォーマットしました)。ご覧のとおり、すべてひどくフォーマットされています。私がそれにアクセスしようとしている理由の一部:それを再構築するため。
ドキュメントで実行しようとしているクエリを実行して、このエラーを吐き出さずに結果を取得する方法はありますか?Single item expected
戻り値としてターゲットにしようとすると、戻り値に含まれるエラーも確認していますsinfo
よね?たとえば、取得する方法はありますall of the sinfo's
か?または、the second sinfo for each product_info
この厄介なエラーが私に吐き出されることなくのみどうですか?