"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحقيق وظيفة تحتوي على حساس لحالة الأحرف () في XPath 1.0؟

كيفية تحقيق وظيفة تحتوي على حساس لحالة الأحرف () في XPath 1.0؟

تم النشر بتاريخ 2024-11-20
تصفح:633

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

يحتوي XPath's Case-Insensitive على()

في XSLT أو تطبيقات DOM الأخرى، يمكن إجراء استعلامات XPath باستخدام مقارنات سلسلة حساسة لحالة الأحرف. تكون محدودة. ومع ذلك، من الممكن تحقيق وظيفة تحتوي على حساس لحالة الأحرف () في XPath 1.0.

1. الطريقة المعتمدة على الترجمة (XPath 1.0)

لمطابقة كل من الاختلافات الحساسة لحالة الأحرف وغير الحساسة لحالة الأحرف لسلسلة ما، استخدم وظيفة الترجمة ():

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

تقوم هذه الطريقة بترجمة جميع الأحرف الكبيرة إلى أحرف صغيرة بشكل فعال، مما يتيح إجراء مقارنات غير حساسة لحالة الأحرف. ومع ذلك، فإنه يتطلب معرفة مجموعة الأحرف المتوقعة.

2. إنشاء XPath الديناميكي بمساعدة JavaScript

إذا كان من الممكن معالجة تعبير 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