「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > XPath 1.0 で大文字と小文字を区別しない contains() 機能を実現するにはどうすればよいですか?

XPath 1.0 で大文字と小文字を区別しない contains() 機能を実現するにはどうすればよいですか?

2024 年 11 月 20 日に公開
ブラウズ:672

How to Achieve Case-Insensitive contains() Functionality in XPath 1.0?

XPath の大文字と小文字を区別しない contains()

XSLT または他の DOM トラバース アプリケーションで、大文字と小文字を区別した文字列比較を使用して XPath クエリを実行すると、制限的であること。ただし、XPath 1.0 で大文字と小文字を区別しない contains() 機能を実現することは可能です。

1.翻訳ベースのメソッド (XPath 1.0)

大文字と小文字を区別する文字列と大文字と小文字を区別しない文字列の両方を一致させるには、translate() 関数を使用します。

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

このメソッドは、すべての大文字を小文字に効果的に変換し、大文字と小文字を区別しない比較を可能にします。ただし、予期される文字セットに関する知識が必要です。

2. JavaScript 支援の動的 XPath 生成

XPath 式の操作が可能な場合は、JavaScript を使用して検索文字列を大文字と小文字のバリアントで動的に置き換えることができます:

function xpathPrepare(xpath, searchString) {
  return xpath.replace("$u", searchString.toUpperCase())
              .replace("$l", searchString.toLowerCase())
              .replace("$s", searchString.toLowerCase());
}

xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");

このメソッドは次の処理を行います一重引用符を含む任意の文字を含む文字列を検索します。

注意: これらの手法は、複雑または大きな文字列操作の場合には最適に実行されない可能性があります。が関与している。可能であれば、既知の文字セットで文字列を保存するか、大文字と小文字を区別しない文字列比較をネイティブにサポートする XPath 2.0 を採用するなど、他の解決策を検討してください。

リリースステートメント この記事は次の場所に転載されています: 1729588936 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3