XPath 1.0'da, B tipi araya giren bir düğümde yer almayan geçerli (bağlam) düğüm A'nın tüm descendant düğümlerini C nasıl seçebilirim? Örneğin, <p>
içinde bulunmayan geçerli öğede bulunan tüm <a>
bağlantılarını bulun. Fakat eğer mevcut elemanın kendisi <p>
'un içinde ise, bu konuyla alakasız. örnekte ...
Başka türde bir elemanda bulunmayan alt öğeleri seçin
<p> <—— this is irrelevant, because it's outside the current element
...
<div> <—— current element (context node)
...
<a></a> <—— the xpath should select this node
...
<p>
...
<a></a> <—— but not this, because it's inside a p, which is inside context
...
<p>
...
</div>
...
</p>
araya giren düğüm çeşitli derinliklerde olabilir.
XSLT 1.0 yazıyorum, bu nedenle ek işlevler generate-id()
, current()
ve benzeri kullanılabilir. mevcut soyundan a
elemanı atası, mevcut bağlam düğüm atası p
yoksa
.//a[not(ancestor::p/ancestor::* = current())]
Bu XPath kontrol:
'/ p/div/a' gibi bir şey mi? Ve bu da http://stackoverflow.com/questions/15818191/xpath-select-one-type-of-nodes-only-in-direct-child-nodes – fukanchik
@ fukanchik no'nun kopyasıdır. div' (şu andaki bağlamsal düğüm) ve “a” içinde olmayan tüm “a” yı seçmem gerekiyor, muhtemelen aradaki birkaç orta düğümle, örneğin aralarında bir kaç satır var. – Tobia