สำหรับ XPath 1.0 หากสภาพแวดล้อมของคุณสนับสนุน XPath 2.0 โปรดดูที่นี่
ใช่. เป็นไปได้ แต่ไม่สวยงาม
/html/body//text()[
contains(
translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'test'
)
]
วิธีนี้ใช้ได้กับสตริงการค้นหาที่รู้จักตัวอักษรล่วงหน้า เพิ่มอักขระเน้นเสียงที่คุณคาดว่าจะเห็น
ถ้าทำได้ให้ทำเครื่องหมายข้อความที่คุณสนใจด้วยวิธีการอื่นเช่นใส่ไว้ใน<span>
คลาสที่กำหนดในขณะที่สร้าง HTML สิ่งเหล่านี้ค้นหาด้วย XPath ได้ง่ายกว่าสตริงย่อยในข้อความองค์ประกอบ
หากนั่นไม่ใช่ตัวเลือกคุณสามารถปล่อยให้ JavaScript (หรือภาษาโฮสต์อื่น ๆ ที่คุณใช้เพื่อเรียกใช้ XPath) ช่วยคุณในการสร้างนิพจน์ XPath แบบไดนามิก:
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");
(เคล็ดลับสำหรับคำตอบของ @KirillPolishchuk - แน่นอนว่าคุณต้องแปลอักขระที่คุณกำลังค้นหาจริงๆเท่านั้น)
วิธีนี้จะใช้ได้กับสตริงการค้นหาใด ๆ โดยไม่จำเป็นต้องมีความรู้เกี่ยวกับตัวอักษรมาก่อนซึ่งถือเป็นข้อดีอย่างมาก
ทั้งวิธีการดังกล่าวข้างต้นล้มเหลวเมื่อสตริงการค้นหาสามารถมีราคาเดียวซึ่งในกรณีนี้สิ่งที่ได้รับความซับซ้อนมากขึ้น