XPath 테스터
붙여넣은 XML이나 HTML에 XPath 표현식을 브라우저 내장 document.evaluate로 평가하므로, 브라우저에서 같은 호출을 하는 내 코드와 결과가 같습니다.
XML이나 HTML 파일을 이 상자에 끌어다 놓아도 됩니다.
XPath 예시 — 눌러서 바로 해 보기
- 바로 아래 자식: catalog 바로 밑의 모든 book
- 어디에 있든: 깊이와 상관없이 모든 title
- 속성 값으로 고르기: tech 분류 책의 제목
- 자식 값 비교: 값이 더 비싼 책의 제목
- 마지막 것: 맨 끝 책의 제목
- 텍스트만: 첫 번째 책의 저자를 태그 없이
- 속성: 어디에 있든 모든 id
- 조건 안의 함수: 제목에 XPath가 들어간 책의 저자
- 축(axis): 각 title 뒤에 오는 author
- 일치 노드를 나열하지 않고 개수 세기
- 가격 모두 더하기
- 네임스페이스와 상관없이 로컬 이름으로
문서에서 노드 골라 경로 만들기
XPath 표현식을 입력하면 일치하는 노드가 표시됩니다.
XPath가 선택하는 노드를 모두 보기
XPath 테스터는 XML 또는 HTML 문서를 붙여넣고 XPath 표현식을 입력하면 선택되는 모든 노드를 즉시 보여줍니다. 각 일치 항목이 개수와 함께 나열되어, 스크래퍼나 XSLT, 테스트에 넣기 전에 쿼리를 확인할 수 있습니다.
작동 방식
문서는 브라우저 내장 DOMParser로 파싱되고 네이티브 document.evaluate 엔진으로 평가되므로, 브라우저에서 같은 호출을 하는 내 코드와 결과가 같습니다. 모든 처리는 브라우저에서 이루어지며 업로드되지 않습니다. 이 도구가 보내는 요청은 사용자가 시킨 것 하나뿐입니다 — “웹 주소에서 불러오기”를 쓰면 브라우저가 입력한 http·https 주소로 직접 요청하므로 그 서버는 요청을 보게 되지만, 문서는 이 사이트를 거치지 않고 곧바로 사용자에게 옵니다.
결과와 문서 다루기
XML 모드에서는 일치한 항목마다 원본의 몇 행 몇 열에 있는지(텍스트 노드는 어느 요소 안에 있는지) 함께 적고, XML 들여쓰기 정리와 XML 한 줄로 압축으로 문서를 그 자리에서 고쳐 쓸 수 있습니다. 파일을 입력 상자에 끌어다 놓아도 되고, 링크 복사는 문서·표현식·HTML로 파싱 설정을 링크에 담아 테스트를 그대로 보낼 수 있게 합니다. 링크에 담기에 너무 긴 문서는 빼고 표현식만 남깁니다.
자주 묻는 질문
형식이 올바르지 않은 XML이라는 오류가 나는 이유는 무엇인가요?
엄격한 XML 모드에서는 문서가 올바른 형식이어야 합니다 — 모든 태그가 닫히고 올바르게 중첩되어야 합니다. HTML 페이지나 조각을 쿼리한다면 "HTML로 파싱"을 켜세요. 닫히지 않거나 어긋난 태그도 받아들입니다.
어떤 XPath 기능을 지원하나요?
브라우저에 내장된 XPath 엔진(document.evaluate)을 그대로 쓰므로 XPath 1.0 범위입니다. 요소 경로, 와일드카드, 속성 선택, 술어(predicate), text(), 그리고 count()·string() 같은 스칼라 함수까지 자바스크립트에서와 똑같이 동작합니다. 문서가 선언한 네임스페이스 접두사는 그대로 쓸 수 있습니다 — media를 선언한 피드라면 //media:thumbnail로 찾으면 됩니다. 다만 접두사 없이 xmlns로만 선언된 기본 네임스페이스 안의 요소는 XPath 1.0에서 가리킬 접두사가 없으므로 //*[local-name()='요소이름'] 형태로 찾아야 합니다.
표현식을 직접 치지 않고 만들 수 있나요?
네. “문서에서 노드 골라 경로 만들기”에는 파싱한 문서의 요소가 들여쓰기된 채 나열되고, 요소와 그 속성마다 버튼이 있습니다. 누르면 그 노드의 절대 경로가 표현식 칸에 들어갑니다 — /catalog/book[2]/title처럼, 이름이 같은 형제가 있을 때만 위치를 붙이고, 기본 네임스페이스 안의 요소에는 local-name() 단계를 씁니다. 그 위의 “XPath 예시 — 눌러서 바로 해 보기”에는 자식, 속성, 술어, last(), contains(), 축, count(), sum() 같은 예시가 있어, 누르면 표현식 칸에 들어가고 입력 칸이 비어 있으면 샘플도 함께 불러옵니다.
XML을 정리하거나, 파일을 끌어다 놓거나, 테스트를 링크로 남기거나, 일치 항목의 위치를 볼 수 있나요?
네. XML 들여쓰기 정리와 XML 한 줄로 압축은 이 사이트의 XML 포매터로 입력 칸을 그 자리에서 고쳐 씁니다. XML 모드에서만 나오는데, 태그가 엉성한 HTML에는 br이나 img 같은 빈 요소가 있어 XML 들여쓰기가 나머지를 그 안에 넣어 버리기 때문입니다. 입력 칸에 끌어다 놓은 파일은 파일 열기처럼 읽고, XML·HTML·텍스트 파일이 아니면 받지 않습니다. 링크 복사는 문서·표현식·HTML로 파싱 설정을 링크에 담고 그 링크를 열면 테스트가 돌아오며, 링크에 담기에 너무 긴 문서는 빼고 표현식만 남깁니다. XML 모드에서는 일치한 항목마다 원본의 행과 열(텍스트 노드는 들어 있는 요소)을 적고, HTML 모드에서는 브라우저가 원문에 없던 요소를 더하므로 위치를 적지 않습니다.
XML이 스키마에 맞는지도 검사할 수 있나요?
이 페이지에서는 하지 않습니다. 문서가 파싱되는지만 확인하고 — XML 모드에서 형식이 올바르지 않으면 “형식이 올바르지 않은 XML입니다”라며 받지 않습니다 — 그 위에서 표현식을 실행합니다. XSD·RELAX NG·DTD로 검증하려면 XSD 검증기를, XML만 들여쓰기하거나 압축하려면 XML 포맷터를 쓰세요. 둘 다 이 페이지의 관련 도구에 있습니다.