2012-02-10 5 views
5

Ebeveynin adını bir metin düğümünün kapsamından nasıl alacağımı bulmaya çalışıyorum.Ana öğe adını XPath'te alın

//text()[name(parent)='p'] 

Geçerli düğümün ana öğesinin adını nasıl alabilirsin?

cevap

13

, neredeyse vardı:

//text()[name(parent::*)='p'] 

ismini dönmeye çalışıyorsanız: Bilginize

name(//text()/parent::*) 
+0

Bu daha iyi bir uygulama mı (// text()/..)? – emschorsch

+1

Hayır, '..', ebeveyn :: 'ile aynı şeydir. Ben genellikle '..' kullanırım, ama bu eski bir cevaptır ve o gün ne düşündüğümü kim bilir ;-) –

2
//text/..[@name='p'] 

Bu sürece üst p bir name niteliği olduğu gibi <text> düğümlerin velilerimize alacak. adını sınamak için çalışıyorsanız

+1

Onun terminolojisi kafa karıştırıcı, ama o '' elemanlarının aksine metin düğümleri hakkında konuşuyor ... Ve eleman isimleri, 'name' niteliklerinin aksine. – LarsH

+0

Ah. Sağol Lars. –

4

, terminolojinin noktası: metin düğümü bir öğe değildir.

Neyse, geçerli düğümün üst seçmek için en sözün yolu Yani ..

, (bir metin düğümü olabilir) geçerli düğümün üst öğesine ismi olduğu name(..)

XPath ifadesi içine konursa:

//text()[name(..)='p'] 

Ama daha az dolambaçlı yol olurdu yazmak için

//p/text() 

(belgedeki p öğesinin ad alanı öneki olmadığı varsayılarak). Her iki durumda da, p adlı elemanın çocukları olan tüm metin düğümlerini seçersiniz.

+0

Bu ek açıklama için teşekkür ederim. – Xeoncross