34.2. 제한 사항을 정의하는 간단한 유형
34.2.1. 개요
XML 스키마를 사용하면 다른 기본 형식 또는 단순 형식에서 새 형식을 파생하여 간단한 형식을 만들 수 있습니다.XML Schema allows you to create simple types by deriving a new type from another primitive type or simple type. 간단한 형식은 simpleType
요소를 사용하여 설명합니다.
새 유형은 기본 유형 을 하나 이상의 facet로 제한하여 설명합니다. 이러한 facets는 새 유형에 저장될 수 있는 유효한 값을 제한합니다. 예를 들어 정확히 9자인 SSN이라는 간단한 유형을 정의할 수 있습니다.For example, you could define a simple type, SSN
, which is a string
of exactly 9 characters.
각 기본 XML 스키마 유형에는 고유한 선택적 facet 세트가 있습니다.
34.2.2. 절차
사용자 고유의 간단한 유형을 정의 하려면 다음을 수행 합니다.To define your own simple type do the following:
- 새 단순 유형의 기본 유형을 결정합니다.
- 선택한 기본 유형에 대해 사용 가능한 facet에 따라 새 유형을 정의하는 제한 사항을 결정합니다.
-
이 섹션에 표시된 구문을 사용하여 적절한
simpleType
요소를 계약의 types 섹션에 입력합니다.
34.2.3. XML 스키마로 간단한 유형 정의
예 34.1. “간단한 유형 구문” 는 간단한 유형을 설명하는 구문을 보여줍니다.
예 34.1. 간단한 유형 구문
<simpleType name="typeName"> <restriction base="baseType"> <facet value="value" /> <facet value="value" /> ... </restriction> </simpleType>
형식 설명은 simpleType
요소에 묶여 있으며 name
특성의 값으로 식별됩니다. 새 단순 유형이 정의되는 기본 유형은 xsd:restriction
요소의 기본
특성으로 지정됩니다. 각 facet 요소는 제한
요소 내에서 지정됩니다. 사용 가능한 facet 및 유효한 설정은 기본 유형에 따라 다릅니다. 예를 들어 xsd:string
에는 다음을 포함한 여러 facet가 있습니다.
-
길이
-
minLength
-
maxLength
-
패턴
-
whitespace
예 34.2. “우편 코드 간단한 유형” 미국 상태에 사용되는 두 문자 우편 코드를 나타내는 간단한 유형에 대한 정의를 보여줍니다. 대문자는 두 개만 포함할 수 있습니다. TX
는 유효한 값이지만 tx
또는 tX
는 유효한 값이 아닙니다.
예 34.2. 우편 코드 간단한 유형
<xsd:simpleType name="postalCode"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Z]{2}" /> </xsd:restriction> </xsd:simpleType>
34.2.4. Java로의 매핑
Apache CXF는 간단한 유형의 기본 유형의 Java 유형에 사용자 정의 간단한 유형을 매핑합니다. 따라서 예 34.2. “우편 코드 간단한 유형” 에 표시된 간단한 유형의 postalCode
를 사용하는 모든 메시지는 postalCode
의 기본 유형이 xsd:string
이므로 String
에 매핑됩니다. 예를 들어 예 34.3. “간단한 유형의 크레딧 요청” 에 표시된 WSDL 조각은 문자열
의 매개 변수인 postalCode
를 사용하는 Java 메서드 state()
가 생성됩니다.
예 34.3. 간단한 유형의 크레딧 요청
<message name="stateRequest"> <part name="postalCode" type="postalCode" /> </message> ... <portType name="postalSupport"> <operation name="state"> <input message="tns:stateRequest" name="stateRec" /> <output message="tns:stateResponse" name="credResp" /> </operation> </portType>
34.2.5. facet 강제
기본적으로 Apache CXF는 간단한 유형을 제한하는 데 사용되는 facet를 적용하지 않습니다. 그러나 스키마 유효성 검사를 활성화하여 facet를 적용하도록 Apache CXF 엔드포인트를 구성할 수 있습니다.
스키마 유효성 검사를 사용하도록 Apache CXF 끝점을 구성하려면 schema-validation-enabled
속성을 true
로 설정합니다. 예 34.4. “서비스 공급자 구성 스키마 유효성 검사 사용” 스키마 유효성 검사를 사용하는 서비스 공급자의 구성을 보여줍니다.
예 34.4. 서비스 공급자 구성 스키마 유효성 검사 사용
<jaxws:endpoint name="{http://apache.org/hello_world_soap_http}SoapPort"
wsdlLocation="wsdl/hello_world.wsdl"
createdFromAPI="true">
<jaxws:properties>
<entry key="schema-validation-enabled" value="BOTH" />
</jaxws:properties>
</jaxws:endpoint>
스키마 유효성 검사 구성에 대한 자세한 내용은 24.3.4.7절. “스키마 유효성 검사 유형 값” 을 참조하십시오.