XPath라는 마법을 이해하려고 애쓰는 데 심각한 문제가 있습니다. 나는 우리가 C의없이, 얼마나 많은 B의 계산하려면 지금XPath 1.0에서 네임 스페이스를 무시하는 방법은 무엇입니까?
<a>
<b>
<c/>
</b>
</a>
:
는 기본적으로, 어떤 XML과 같이 있습니다. 이것은 다음과 같은 XPath를 쉽게 수행 할 수 있습니다
count(*/b[not(descendant::c)])
이제 질문이 간단하다 : 어떤 네임 스페이스를 무시하고 내가 같은 일을 어떻게해야합니까?
나는이게 뭔가라고 상상합니까?
count(*/[local-name()='b']/[not(descendant::[local-name()='c'])])
그러나 이것은 올바르지 않습니다. 위와 동일한 XPath가 무엇이 겠지만 네임 스페이스를 무시합니까? 그것은 일반적으로 제대로 작동하도록 뿐이다 네임 스페이스를 패배하지 않는 것이 좋다
count(*[local-name()='b' and not(descendant::*[local-name()='c'])])
하는 것으로 다음과 같이
XPath 1.0에 대해 구체적으로 묻는 분이라면 질문에 명확하게 기재하십시오. XPath 2.0 및 3.0에서는 임의의 네임 스페이스에서 로컬 이름이 c 인 요소를 선택하기 위해 * : c를 쓸 수 있습니다. –
OP는 질문에 xpath-1.0으로 명시 적으로 태그를 붙였습니다.하지만 제목 편집에서 내가 작성 했어야합니다. 이제 해결되었습니다. – kjhughes
괜찮 았어. 그 주제를 xpath-1.0으로 태그하는 것으로 충분하다고 가정했습니다. 나는 다음 번에 그것을 주제에 확실히 추가 할 것이다. – Kahn