Ответ 1
Попробуйте следующее:
/doc/Test[contains(Name, "Pre") and Type="Known"]/Data/Name
Ниже приведен рабочий пример, реализованный в Javascript, чтобы воспользоваться Фрагментами кода StackOverflow Runnable
function fu(path){
var output = "";
var results = document.evaluate(path, document, null, XPathResult.ANY_TYPE , null);
while(nextResult = results.iterateNext()){ output += nextResult.outerHTML + "\n"; }
return output;
}
document.body.innerText = fu('//doc/Test[contains(Name, "Pre") and Type="Known"]/Data/Name');
<doc>
<Test>
<Name>1 Pre Histoy</Name>
<Type>Known</Type>
<Data>
<Name>Dinasor</Name>
<Name>Fish</Name>
</Data>
</Test>
<Test>
<Name>1 Post Histoy</Name>
<Type>Known</Type>
<Data>
<Name>Human</Name>
<Name>Dog</Name>
</Data>
</Test>
<Test>
<Name>1 Post Histoy</Name>
<Type>UNKNOWN</Type>
<Data>
<Name>Human</Name>
<Name>Dog</Name>
</Data>
</Test>
</doc>