programing

요소의 n번째 인스턴스를 가져오는 XPath 쿼리

elecom 2023. 10. 30. 20:33
반응형

요소의 n번째 인스턴스를 가져오는 XPath 쿼리

HTML 파일(컨텐츠를 제어하지 않는)에 여러 개가 있습니다.input모두 같은 고정 요소들id의 속성"search_query". 파일의 내용은 바뀔 수 있지만 항상 두번째 파일을 받고싶다는 것을 알고있습니다.inputid 속성을 가진 요소"search_query".

이 작업을 하려면 XPath 식이 필요합니다.나는 노력했다.//input[@id="search_query"][2]하지만 그것은 효과가 없습니다.다음은 이 쿼리가 실패한 XML 문자열의 예입니다.

<div>
  <form>
    <input id="search_query" />
   </form>
</div>

<div>
  <form>
    <input id="search_query" />
  </form>
</div>

<div>
  <form>
    <input id="search_query" />
  </form>
</div>

위의 내용은 단지 예시일 뿐이고 다른 HTML 코드는 상당히 다를 수 있다는 것을 기억하세요.input요소는 일관된 문서 구조 없이 어디에나 나타날 수 있습니다(단, 항상 최소 2개가 있음이 보장되는 경우는 제외).inputID 특성이 다음인 요소"search_query").

올바른 XPath 표현은 무엇입니까?

다음은 FAQ입니다.

//somexpression[$N]

"선택한 모든 노드를 찾습니다.//somexpression그것은$N그 부모의 자식"이라고 했습니다.

원하는 것은:

(//input[@id="search_query"])[2]

기억하기: 더[]연산자의 우선 순위(우선 순위)가 다음보다 높습니다.//약칭의

작동하는 것 같습니다.

/descendant::input[@id="search_query"][2]

Michael Kay의 "XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition"부터입니다.

XML Path Language 규격 http://www.w3.org/TR/xpath/ #path-약어의 "약어 구문" 섹션에는 단서를 제공하는 노트도 있습니다.

언급URL : https://stackoverflow.com/questions/4007413/xpath-query-to-get-nth-instance-of-an-element

반응형