XML / XSD 검증기
서버 측샘플
검증 결과
XSD 스키마
XML 문서
기술적 세부 정보
XML / XSD 검증기의 동작 방식
도구가 하는 일
이 XML XSD 검증기는 서버 측 처리로 XML 문서를 XML 스키마 정의에 대해 검사합니다. 이 도구는 스키마에 정의된 구조, 데이터 타입, 요소 순서, 속성 요구 사항을 검증합니다. 검증에 실패하면 가능한 경우 줄 번호와 열 번호와 함께 구체적인 오류를 보고합니다. 검증기는 네임스페이스, 복합 타입, 시퀀스 제약, 패턴 매칭 및 값 제한 같은 스키마 패싯을 처리합니다.
예시: 도서 카탈로그 검증
도서에 정수 ID와 소수 가격을 요구하는 다음 XSD 스키마를 고려해 보세요:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element><book id="abc"><price>not-a-number</price></book> 같은 잘못된 XML은 ID 속성과 price 요소 모두에 대해 타입 제약 오류로 검증에 실패합니다.
일반적인 사용 사례
개발자는 SOAP API와 통합하거나 구성 파일을 검증하거나 데이터 교환 형식을 처리할 때 XML 스키마 검증을 사용합니다. 일반적인 시나리오로는 공개된 스키마에 대해 API 응답을 검증하기, 배포 전에 구성 파일을 확인하기, ETL 파이프라인에서 데이터 품질을 보장하기 등이 있습니다. 이 검증기는 데이터가 프로덕션 시스템에 도달하기 전에 타입 불일치, 필수 요소 누락, 잘못된 요소 순서를 잡아내는 데 특히 유용합니다.
검증 엔진 및 제한 사항
이 도구는 libxmljs Node.js 바인딩을 통해 libxml2를 사용하며 XML Schema 1.0 준수를 제공합니다. 검증기는 보안을 위해 스키마를 전적으로 서버 측에서 처리하며 외부 리소스를 가져오거나 네트워크 기반 import를 해석하지 않습니다. 안전을 위해 외부 엔티티 처리(XXE)는 비활성화되어 있습니다. 스키마 include 및 import는 참조되는 모든 스키마가 메인 XSD 콘텐츠에 제공된 경우에만 동작합니다.
- 네트워크 접근: 보안을 위해 차단됨
- 스키마 import: 인라인이어야 하며 외부 해석 불가
- 외부 엔티티: 비활성화됨(XXE 보호)
- 처리 제한: 합리적인 크기 제한이 적용됨
서버 측 처리 vs 클라이언트 측 처리
클라이언트 측 XML well-formedness(정형성) 검사는 기본적인 구문 검증에는 충분합니다. 하지만 XSD 검증은 브라우저에 XML 스키마 처리기가 포함되어 있지 않기 때문에 전문 엔진이 필요합니다. 서버 측 검증은 일관된 결과를 보장하고, 상속 및 import 같은 복잡한 스키마 기능을 처리하며, 잠재적으로 악성일 수 있는 XML 콘텐츠로부터 보안적으로 격리된 환경을 제공합니다.