XQuery로 XML 계층 데이터를 질의하고 변환하는 방법

XQuery의 XPath·FLWOR 구조와 SQL의 차이, XML 데이터 검색·변환·통합에 적용하는 방법을 정리한다.

2026-08-14 · 최초 발행 2025-10-14

XML 트리를 대상으로 하는 질의 언어

XQuery는 XML 문서의 내용을 검색하고, 조작하고, 다른 형태로 변환하기 위해 만든 W3C 권고 표준 언어다. 복잡한 계층 구조 안에서 필요한 데이터를 골라낼 때 쓰이며, 웹 서비스와 문서 관리, 데이터 통합 환경에서 역할을 맡는다.

XPath 문법을 바탕으로 경로를 따라 노드를 찾고, 필터링과 변환을 하나의 질의 안에서 수행할 수 있다.

XPath와 FLWOR로 데이터를 다루는 방식

XQuery는 XPath를 확장해 XML 문서 내부의 경로 탐색과 노드 선택을 다룬다. 핵심 구문인 FLWOR는 For, Let, Where, Order by, Return으로 구성되며, SQL과 비슷한 형태로 질의를 작성하게 해 준다.

결과는 XML뿐 아니라 HTML이나 텍스트 형식으로도 반환할 수 있다. 서로 다른 XML 소스를 함께 조회하거나 관계형 DB와 통합 질의를 구성하는 데도 사용할 수 있으며, 트리 구조의 탐색과 집계에 적합하다.

SQL과 다른 데이터 모델

구분 XQuery SQL
데이터 구조 계층형(트리 구조, XML) 관계형(테이블 구조)
질의 대상 XML 문서/노드 테이블/레코드
표준 W3C 권고 ISO 표준
기본 단위 노드(Node) 행(Row)
경로 탐색 XPath 사용 조인(Join)
출력 형식 XML, HTML, 텍스트 테이블(행·열)
사용 사례 웹 서비스, 전자문서, 데이터 통합 데이터 분석, OLTP, 보고서

SQL이 행과 열을 연결해 데이터를 찾는다면, XQuery는 노드 사이의 계층과 경로를 따라 데이터를 다룬다.

질의가 결과로 변환되는 흐름

XML 데이터 소스XML 파서(Parser)XQuery 엔진FLWOR 구문 실행결과 생성출력(XML/HTML/Text)

XML 파서는 문서를 DOM 또는 이벤트 기반 방식으로 읽는다. 이후 XQuery 엔진이 FLWOR 구문과 XPath 경로를 평가하고, 생성된 결과를 XML·HTML·Text 형식으로 변환해 반환한다.

FLWOR로 조건과 정렬을 표현하기

다음은 books.xml을 대상으로 하는 XML 예제다.

<books>
  <book>
    <title>XML Fundamentals</title>
    <author>John Smith</author>
    <price>29.99</price>
  </book>
  <book>
    <title>XQuery in Action</title>
    <author>Jane Doe</author>
    <price>39.99</price>
  </book>
</books>

가격 조건을 적용하고 가격순으로 정렬한 뒤 새 XML 결과를 만드는 질의는 다음과 같다.

for $b in doc("books.xml")/books/book
let $price := $b/price
where $price > 30
order by $price descending
return
  <result>
    <title>{ $b/title/text() }</title>
    <price>{ $price/text() }</price>
  </result>

이 질의의 반환 결과는 아래와 같다.

<result>
  <title>XQuery in Action</title>
  <price>39.99</price>
</result>

대용량 XML과 통합 작업에서의 고려 사항

대규모 XML을 처리할 때는 XML DB인 MarkLogic, BaseX 등에서 요소와 속성 인덱스를 활용할 수 있다. 메모리에 문서 전체를 올리는 DOM 방식 대신 SAX 기반 스트리밍 처리를 선택하는 방법도 있다.

관계형 DB 데이터를 XML로 변환한 뒤 외부 API의 XML 응답과 병합할 수 있으며, 이기종 시스템 사이에서는 XML을 표준 데이터 포맷으로 사용할 수 있다. 개발과 검증에는 BaseX, eXist-db 같은 오픈소스 XQuery 엔진을 로컬 환경에서 활용할 수 있고, XML 문서 갱신에는 XQuery Update Facility를 적용할 수 있다.

XML이 중심인 업무에서의 활용

SOAP/XML 기반 API 응답에서는 필요한 데이터만 추출해 응답 형식을 가공할 수 있다. XML 전자문서를 보관하는 문서 관리 시스템에서는 특정 메타데이터 검색에 쓸 수 있다. 서로 다른 XML 스키마를 변환하거나 여러 XML 데이터를 병합하는 통합 작업도 XQuery의 적용 대상이다.

복잡한 XML 구조에서 필요한 데이터만 정확히 선별하고, W3C 표준을 통해 이식성과 호환성을 확보하며, 데이터 마이그레이션과 통합 작업의 생산성을 높이는 데 활용할 수 있다. XML과 관계형 데이터를 함께 다뤄야 하는 환경에서는 SQL과 병행해 각각의 데이터 모델에 맞는 질의 방식을 선택할 수 있다.

XQueryXMLXPathFLWOR데이터 통합