SORU
12 Aralık 2011, PAZARTESİ


duyarsız xpath içerir() durum mümkün mü?

Eğer nodeValue belirli bir dize içeriyorsa, DOM ve maaşımın tüm textnodes çalışan aştım.

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

Bu büyük / küçük harfe duyarlıdır. Ancak, ben de*, TEST *4 TesT oder yakalamak istiyor. Bu mümkün XPath (JavaScript) ile mi?

CEVAP
12 Aralık 2011, PAZARTESİ


Evet. Mümkün, ama güzel değil.

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

Eğer yapabilirsen, başka bir anlamı ile ilginizi çeken metin bölümlerini işaretle, belirli bir sınıf vardır <span> içine yerleştirme gibi.

Eğer bu mümkün değilse, uygun bir XPath ifadesi binası ile size yardımcı JavaScript olabilir:

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");
// -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"

(@KirillPolishchuk's answer - tabii ki sadece aslında sen bu karakterleri çevirmek için ihtiyacımız çaktırmaaramaiçin)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • Phymec

    Phymec

    18 Temmuz 2009