XSD 제한/Facets
제한(restriction)은 XML 요소나 속성에 허용되는 값을 정의하는 데 사용됩니다. XML 요소에 대한 제한은 특성(facet)이라고 합니다。
값 제한
아래의 예제는 "age"라는 이름의 제한을 가진 요소를 정의합니다. age의 값은 0보다 낮거나 120보다 높을 수 없습니다:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
일련의 값을 제한
XML 요소의 내용을 허용된 값의 집합으로 제한하려면, 열거 제약조건(enumeration constraint)을 사용해야 합니다。
다음 예제는 "car"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 Audi, Golf, BMW입니다:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
위의 예제는 다음과 같이 쓸 수도 있습니다:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
주석:이 경우, "carType" 타입은 "car" 요소의 구성 요소가 아니기 때문에 다른 요소에서 사용될 수 있습니다:
일련의 값을 제한
XML 요소의 내용을 사용 가능한 숫자나 문자의 시퀀스로 제한하려면, 패턴 제약조건(pattern constraint)을 사용해야 합니다。
다음 예제는 "letter"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 소문자 a - z 중 하나입니다:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
다음 예제는 "initials"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 대문자 A - Z 중의 세 개입니다:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
다음 예제도 "initials"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 대문자 또는 소문자 a - z 중의 세 개입니다:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
다음 예제는 "choice"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 x, y 또는 z 중 하나입니다:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
다음 예제는 "prodid"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 0에서 9 사이의 다섯 개의 아라비아 숫자의 시퀀스로, 각 숫자는 0-9의 범위에 있습니다:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
일련의 값에 대한 다른 제한
아래의 예제는 "letter"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 a-z 중 0개 이상의 문자입니다:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
아래의 예제는 "letter"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 한 쌍 또는 여러 쌍의 문자로 구성되며, 각 쌍은 소문자로 시작한 후 대문자로 이어져야 합니다. 예를 들어, "sToP"는 이 패턴을 통과하지만, "Stop", "STOP" 또는 "stop"는 통과하지 않습니다:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
아래의 예제는 "gender"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 male 또는 female입니다:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
아래의 예제는 "password"라는 이름의 제한된 요소를 정의합니다. 허용되는 값은 8개의 문자로 구성된 단一行 문자이며, 이 문자는 대문자 또는 소문자 a-z 또는 숫자 0-9 중 하나여야 합니다:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
공백 문자의 제한
공백 문자(whitespace characters)의 처리 방식을 정의하려면 whiteSpace 제한을 사용해야 합니다.
아래의 예제는 "address"라는 이름의 제한된 요소를 정의합니다. 이 whiteSpace 제한은 "preserve"로 설정되어 있으며, 이는 XML 처리기가 어떤 공백 문자도 제거하지 않을 것이라는 의미입니다:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
이 예제는 "address"라는 이름의 제한된 요소를 정의합니다. 이 whiteSpace 제한은 "replace"로 설정되어 있으며, 이는 XML 처리기가 모든 공백 문자(줄 바꿈, 엔터, 공백 및 탭)를 제거할 것이라는 의미입니다:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
이 예제는 "address"라는 이름의 제한된 요소를 정의합니다. 이 whiteSpace 제한은 "collapse"으로 설정되어 있으며, 이는 XML 처리기가 모든 공백 문자(줄 바꿈, Enter, 공백 및 탭은 공백으로 대체되고, 시작과 끝의 공백은 제거되며, 연속된 여러 공백은 하나의 공백으로 축소됩니다)를 제거할 것입니다:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
길이 제한
요소의 값 길이를 제한하려면 length, maxLength 및 minLength 제한을 사용해야 합니다.
이 예제는 "password"라는 이름의 제한된 요소를 정의합니다. 값은 정확히 8자입니다:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
이 예제는 "password"라는 이름의 제한된 요소를 정의합니다. 값은 최소 5자, 최대 8자입니다:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
데이터 유형의 제한
제한 | 설명 |
---|---|
enumeration | 허용되는 값의 목록을 정의합니다 |
fractionDigits | 허용되는 최대 소수점 자릿수를 정의합니다. 반드시 0 이상이어야 합니다. |
length | 허용되는 문자나 목록 항목의 정확한 수를 정의합니다. 반드시 0 이상이어야 합니다. |
maxExclusive | 数值의 상한을 정의합니다. 허용되는 값은 이 값보다 작아야 합니다. |
maxInclusive | 数值의 상한을 정의합니다. 허용되는 값은 이 값보다 작거나 같아야 합니다. |
maxLength | 허용되는 문자나 목록 항목의 최대 수를 정의합니다. 반드시 0 이상이어야 합니다. |
minExclusive | 数值的下限을 정의합니다. 허용되는 값은 이 값보다 크거나 같아야 합니다. |
minInclusive | 수치의 하한을 정의합니다. 허용되는 값은 이 값보다 커야 합니다. |
minLength | 허용되는 문자나 목록 항목의 최소 개수를 정의합니다. 0보다 크거나 같아야 합니다. |
pattern | 허용되는 문자의 정확한 시퀀스를 정의합니다. |
totalDigits | 허용되는 아라비아 숫자의 정확한 자릿수를 정의합니다. 0보다 커야 합니다. |
whiteSpace | 비어 있는 문자(줄 바꿈, 엔터, 공백 및 탭) 처리 방식을 정의합니다. |