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:

  1. 새 단순 유형의 기본 유형을 결정합니다.
  2. 선택한 기본 유형에 대해 사용 가능한 facet에 따라 새 유형을 정의하는 제한 사항을 결정합니다.
  3. 이 섹션에 표시된 구문을 사용하여 적절한 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절. “스키마 유효성 검사 유형 값” 을 참조하십시오.