XSD 검증기
적격 XML 문서도 여전히 틀릴 수 있습니다: 필수 요소가 빠졌거나, 속성에 잘못된 데이터 타입을 썼거나, 요소가 잘못된 순서로 있을 수 있습니다. XSD(XML Schema Definition)는 문서가 정확히 어떻게 생겨야 하는지 기술합니다. 이 검증기는 XML과 그 XSD를 짝지어 W3C XML Schema 검증기를 돌리고, 모든 위반을 줄, 요소, 그리고 깨진 구체적 제약과 함께 나열합니다.
XSD에 대해 XML을 검증하는 방법
-
1
두 파일 붙여넣기
한쪽에 XML, 다른 쪽에 XSD 스키마. 여러 스키마를 함께 붙여넣을 수 있습니다.
-
2
검증 실행
파서가 요소, 속성, 타입을 스키마 선언에 대해 대조합니다.
-
3
오류 검토
각 위반이 요소 경로, 기대 제약, 실제 값을 보여줍니다.
-
4
고치고 재검증
제자리에서 편집하고 다시 불러오지 않고 재실행합니다.
XSD가 점검하는 것
- 요소 이름과 개수: 필수, 선택, 최소/최대 출현 횟수.
- 요소 순서: sequence, choice, all.
- 속성 존재와 타입: 필수 vs 선택, 기본값, 고정값.
- 데이터 타입:
xs:string,xs:integer,xs:decimal,xs:dateTime,xs:boolean,xs:anyURI, 사용자 정의. - 제약: 최소/최대 길이, 열거, 정규식 패턴, 최소/최대 값.
- 참조 무결성: 교차 요소 제약을 위한
xs:key,xs:keyref,xs:unique.
전형적인 오류
| 오류 | XSD 제약 |
|---|---|
필수 요소 <email> 누락 |
minOccurs="1" |
<phone> 요소가 너무 많음 |
maxOccurs="2" 초과 |
| 값 “abc”가 유효한 정수가 아님 | type="xs:integer" |
| 값 “[email protected]“가 패턴과 불일치 | xs:string의 xs:pattern |
| 요소가 순서를 벗어남 | xs:sequence |
알 수 없는 요소 <foo> |
스키마에 선언되지 않음 |
| 중복 키 | xs:unique 위반 |
XSD와 대안 사이 선택
- XSD: W3C 표준, 장황하고 강력하며 널리 지원됩니다. 엔터프라이즈 XML의 첫 선택.
- RELAX NG: 더 단순한 구문, 동등하게 표현력 있음. 문서 형식(DocBook, TEI)에서 인기.
- Schematron: 규칙 기반, 문서에 대해 XPath 단언을 실행. 구조를 넘는 비즈니스 규칙에 좋음.
- DTD: 더 오래되고 훨씬 덜 표현력 있음. HTML 역사적 호환을 위해 여전히 사용됨.
많은 프로젝트가 구조에는 XSD를, 복잡한 교차 필드 규칙에는 Schematron을 씁니다.
흔한 함정
- 네임스페이스가 일치해야 합니다. XSD가
targetNamespace="http://example.com"을 선언했는데 XML이 그 네임스페이스를 쓰지 않으면 “선언을 찾을 수 없음”으로 검증이 실패합니다. - xs:anyType는 마법의 탈출구가 아닙니다. 무엇이든 일치시키지만 검증을 전혀 제공하지 않습니다.
- 기본값은 속성이 없을 때만 적용됩니다. 명시적 빈 값(
attr="")은 기본값을 받지 않습니다. - 공백 처리는 타입마다 다릅니다.
xs:string은 보존하고,xs:token은 합치며,xs:normalizedString은 탭/줄바꿈을 공백으로 바꿉니다.
디버깅 워크플로
- 먼저 스키마 없이 검증(적격성 점검). 파싱 오류를 고치세요.
- 그다음 스키마에 대해 검증.
- 첫 오류에 집중하세요. XSD 검증기는 때때로 오류를 연쇄시킵니다. 첫째가 보통 가장 실행 가능합니다.
- 큰 문서에서는 XPath로 문제 요소를 찾으세요.
자주 묻는 질문
아니요. 따로 붙여넣거나, XML에서 xsi:schemaLocation으로 스키마를 참조하세요. 대부분의 도구가 두 방식을 모두 지원합니다.
네. 다른 네임스페이스의 요소가 나타날 때 각각 자체 스키마가 필요합니다. 모두 붙여넣으면 검증기가 전부 불러옵니다.
XSD 1.0. 기반이 되는 libxml 엔진은 XSD 1.1을 구현하지 않으므로, 단언, 조건부 타입, open content 같은 1.1 전용 기능은 적용되지 않습니다.
아니요. XML과 스키마는 해당 단일 요청의 검증을 실행하기 위해서만 서버로 전송되며, 이후 저장되거나 기록되지 않습니다.
관련 도구
FPS 카운터
requestAnimationFrame으로 브라우저 FPS를 측정하세요. 스무딩, 최소/최대 프레임레이트, 경고 임계값, 선택형 그래프를 제공합니다. 업로드나 API 없이 로컬에서 실행됩니다.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
ASCII 이진수 변환기
ASCII 문자열을 이진수 표현으로 변환하세요. 각 문자는 8비트가 되고 공백으로 구분되어 프로토콜 추적이나 과제에 바로 붙여넣기 좋습니다.
색 대비 확인기
전경색과 배경색 간의 WCAG 대비비를 확인하십시오. AA, AAA, 큰 글자 및 비텍스트 영역의 대비 측면에서 합격/불합격을 판단합니다.
자바스크립트 압축기
변수명 변경, 공백 제거, 데드 코드 제거, 상수 폴딩으로 자바스크립트를 압축해 더 작은 번들을 만듭니다.
이 도구는 다른 언어로도 제공됩니다
- XSD-validerare [SV]
- XSD-validator [NL]
- Walidator XSD [PL]
- XSD-Validator [DE]
- เครื่องตรวจสอบความถูกต้องของ XSD (XSD Validator) [TH]
- Validador XSD [ES]
- Validator XSD [ID]
- مُحقق تنسيق XSD [AR]
- Validateur XSD [FR]
- XSDバリデーター [JA]
- Validador XSD [PT]
- Bộ xác thực XSD [VI]
- XSD Validator [EN]
- Validator XSD [IT]
- Валидатор XSD [RU]
- XSD Doğrulayıcı [TR]
- XSD 校验工具 [ZH]