이 변환은 UML 패키지를 소스로 허용하고 패키지의 해당 클래스를 스키마의 요소로 변환하여 XML 스키마를 생성합니다. 생성된 스키마는 변환의 대상으로 지정한 프로젝트에서 schema라는 이름의 폴더에 저장됩니다. 스키마를 포함하는 파일은 패키지의 이름과 동일하며, 확장자 .xsd를 포함합니다.
예를 들어, Address라는 이름의 클래스를 포함하는 PurchaseOrder라고 하는 UML 패키지가 있다고 가정해 보십시오. 이 패키지를 소스로 사용해서 변환을 실행할 경우 다음 XML 스키마가 작성됩니다.
하나 이상의 패키지를 포함하는 UML 모델을 소스로 선택하는 경우, 이 변환으로 스테레오타입 <<XSDProfile::schema>> 또는 키워드 schema를 포함하는 모델의 각 패키지에 XML 스키마가 생성됩니다. 변환 특성, 표시되지 않은 패키지 프로세스의 값을 true로 설정한 경우, 변환 시 각 패키지에 XML 스키마가 생성됩니다.
소프트웨어는 UML에서 XSD로 변환의 소스로 사용할 수 있는 UML 모델 예제 세트를 번들링합니다. UML에서 XSD로 변환을 설치한 후 설치 디렉토리의 예제를 작업공간에 복사해야 합니다. 예를 들어, 소프트웨어를 RSA/eclipse에 설치한 경우에는 예제가 RSA/eclipse/plugins/com.ibm.xtools.transform.samples.uml2.xsd/examples 폴더에 있게 됩니다. 예제를 작업공간에 복사하려면 다음을 수행하십시오.
노트: 모델 예제를 열었을 때 XSDProfile의 이전 버전이 사용 중임을 알리고 새 프로파일로 이주할 것인지를 묻는 대화 상자를 받을 수도 있습니다. 이 경우 예를 클릭하고 프로파일의 새 버전으로 이주하십시오.
변환을 실행하려면 다음을 수행하십시오.
필요한 경우 다음을 수행하십시오.
이 단계는 비단순 XML 스키마의 UML 모델을 작성할 경우에 필요합니다. UML의 XML 스키마 모델링에 대한 자세한 정보는 UML의 XML 스키마 모델링: 최적 실행 절을 참조하십시오.
변환 시 XSD 스키마가 생성되어 schema라는 폴더의 지정된 프로젝트에 배치됩니다. 네비게이터 보기를 사용하여 생성된 스키마를 검사하십시오.
또한 XSD 템플리트 모델을 사용하여 UML 모델을 작성할 수도 있습니다. 필수 모델 라이브러리, XSDDataTypes를 미리 가져와 XSD 프로파일을 패키지에 적용한다는 장점이 있습니다.
변환 시 XSD 스키마가 생성되어 schema
라는 폴더의
지정된 프로젝트에 배치됩니다.
네비게이터 보기를 사용하여 생성된 스키마를 검사하십시오.
이 변환은 최소 하나의 패키지 또는 하나 이상의 UML 패키지를 소스로 포함하는 UML 모델을 허용합니다.
이 변환에서는 프로젝트가 변환 대상으로 허용됩니다.
이 변환에서는 다음 변환 특성이 정의됩니다.
특성 | 설명 |
대상 이름 공간 | 변환에 의해 생성된 스키마의 대상 이름 공간. 이 특성 값은 문자열입니다(예: http://www.ibm.com/SampleXSDTransformation). |
대상 이름 공간 접두어 | 변환에 의해 생성된 스키마의 대상 이름 공간에 대한 접두어. 이 특성 값은 문자열입니다(예: sxt). |
스테레오타입 또는 키워드가 없는 UML 클래스 프로세스 |
이 특성은 UML 클래스가 어떤 스테레오타입 또는 키워드와도 연관이 없는 경우 변환 시 해당 UML 클래스가 처리되는지 여부를 판별합니다. 이 특성 값은 true 또는 false 중 하나가 될 수 있습니다. 기본적으로 이 값은 true로 설정되어 있으며, 변환 시 상위 레벨 패키지의 클래스가 모두 처리됩니다. (일반적으로 변환 시 중첩 패키지는 처리되지 않습니다.) 패키지의 모든 클래스에 변환을 적용할 필요가 없는 경우에는 이 값을 false로 설정해야 하고 XSDProfile의 고유 스테레오타입 또는 키워드를 변환할 클래스에 적용해야 합니다. |
스테레오타입 또는 키워드가 없는 UML 패키지 프로세스 |
이 특성은 UML 패키지가 어떤 스테레오타입 또는 키워드와도 연관이 없는 경우 변환 시 해당 UML 패키지가 처리되는지 여부를 판별합니다. 이 특성 값은 true 또는 false 중 하나가 될 수 있습니다. 기본적으로 이 값은 true로 설정되어 있으며, 변환 시 상위 레벨 패키지가 모두 처리됩니다. (일반적으로 변환 시 중첩 패키지는 처리되지 않습니다.) 모델의 모든 상위 레벨 패키지에 변환을 적용할 필요가 없는 경우에는 이 값을 false로 설정해야 하고 XSDProfile 또는 키워드 schema에서 해당 스테레오타입 <<schema>>를 변환할 패키지에 적용해야 합니다. |
중첩 클래스를 내재적으로 익명의 유형으로 변환 |
이 특성은 중첩(nesting) 클래스와 중첩된(nested) 클래스 간에 명시적 연관이 없는 경우 중첩된 클래스가 익명의 유형으로 변환되는지 여부를 판별합니다. 이 특성 값은 true 또는 false 중 하나가 될 수 있습니다. 기본적으로 이 값은 false로 설정되어 있으며, 중첩 클래스에서 이 특성과 연관이 있는 경우에만 변환 시 중첩된 클래스가 익명의 유형으로 변환됩니다. 이 값이 true로 설정되어 있으면 중첩된 클래스에 해당하는 XSD 유형이 이 익명 유형의 요소를 포함하는 경우 중첩된 클래스는 모두 익명의 유형으로 변환됩니다. 이 특성 값을 true로 설정하여 내재적으로 익명의 유형을 생성한 경우 여러 가지 제한이 따르므로, 이 값 사용을 자제하도록 권장합니다. |
UML에서 XSD로 변환에 의해 지원되는 UML의 비단순 XML 스키마를 모델링하는 데는 XML 스키마 요소를 표시하기 위한 UML 구성의 작은 서브세트가 사용됩니다. 이 서브세트에는 UML 요소 즉, 클래스, 특성, 일반화, 연관 및 종속성이 포함됩니다. 이 서브 세트를 사용하여 XML 스키마 요소(예: 단순 유형, 복합 유형, 속성, 요소 및 재사용가능한 그룹 등)를 표시하려면 XSD 프로파일을 소스 UML 모델에 적용하고 이 프로파일의 스테레오타입을 사용한 후 스테레오타입의 특성을 적절한 값으로 설정하여 해당 프로파일을 표시해야 합니다.
다음 클래스 다이어그램은 XSD 프로파일의 UML 모델을 표시합니다.
아래 표에서는 스테레오타입 및 관련 특성을 설명합니다.
스테레오타입 | 메타클래스 확장 | 특성 | 주석 |
어노테이션 | 주석 |
유형 언어 소스 |
주석은 응용프로그램 정보 또는 문서 어노테이션으로 변환됩니다. 유형 특성은 어노테이션 유형(문서 및 appinfo)을 판별합니다. 언어 및 소스 특성은 문서의 자연어와 추가 문서의 소스를 각각 지정합니다. |
속성 | 클래스의 특성 |
양식 사용 |
UML 특성은 해당 유형이 단순 유형이고 해당 다중성이 [0..1]인 경우 속성 그룹 또는 복합 유형의 속성으로 변환됩니다. 스테레오타입 특성 양식은 속성 이름을 인스턴스 문서에 규정해야 하는지 여부를 판별합니다. 해당 값은 규정, 비규정 또는 기본값 중 하나가 될 수 있습니다. 값이 기본값인 경우, 해당 값의 기본값은 기본값이 비규정인 스키마의 attributeFormDefault로 됩니다. 사용 특성은 속성이 선택적인지 필수인지를 판별합니다. 이때 값은 선택적, 금지 또는 필수일 수 있습니다. 기본적으로 해당 값은 선택적입니다.금지 값은 현재 구현에서 무시됩니다. |
attributeGroup | 클래스 | 클래스는 속성 그룹으로 변환됩니다. | |
complexType | 클래스 |
anonymous block final modelGroup maxOccurs minOccurs mixed |
클래스는 complex type으로 변환됩니다. anonymous 특성은 상위 레벨 complex type 선언이 스키마에 작성되어 있는지를 판별합니다. 해당 값은 true 또는 false 중 하나가 될 수 있습니다. 값이 true인 경우, 어떤 유형 선언도 생성되지 않으며, 이 클래스에 대한 모든 참조는 anonymous 유형을 attribute 또는 element의 유형으로 갖는 attribute 또는 element 선언으로 변환됩니다. 기본적으로 해당 값은 false입니다. block 특성은 유형 대체 차단 여부를 판별합니다. 이 특성 값은 #all, 확장자, 제한사항, 또는 공백으로 분리한 확장자 및 제한사항 목록이 될 수 있습니다. #all 값은 어떤 파생된 유형도 이 유형을 대체하지 못하게 하고, 확장자 값은 이 유형의 어떤 확장자도 이 유형을 대체하지 못하게 하며, 제한사항 값은 이 유형의 어떤 제한사항도 이 유형을 대체하지 못하게 합니다. "확장자 제한사항" 목록은 #all과 같은 영향을 미칩니다. block 특성을 지정하지 않으면 기본값은 스키마의 blockDefault 특성으로 설정됩니다. final 특성은 기타 유형이 이 특성에서 파생될 수 있는지 여부를 판별합니다. 해당 값은 #all 또는 (확장자 또는 제한사항) 목록이 될 수 있습니다. 해당 값이 #all인 경우, 어떤 유형의 파생도 허용되지 않습니다. 특정 사항을 제어하도록 모든 제한사항 또는 확장자 키워드의 공백 분리형 목록으로 값을 설정할 수 있습니다. 기본값은 스키마의 finalDefault로 설정됩니다. modelGroup 특성은 유형의 컨텐츠 모델을 판별합니다. modelGroup의 값은 all, choice 또는 또는 sequence가 될 수 있습니다. 기본값은 sequence입니다. Constraint: modelGroup의 값이 all인 경우, anonymous의 값은 false로 설정해야 합니다. 그렇지 않은 경우, constraint 위반이 발생합니다. minOccurs 및 maxOccurs 값은 복합 유형에서 sequence 및 choice 그룹이 발생할 수 있는 최소 및 최대 횟수를 판별합니다. all 모델 그룹의 경우, maxOccurs는 1 이어야 하고 minOccurs는 0 또는 1만 될 수 있습니다. boolean 특성 mixed는 complex type이 섞인 컨텐츠를 허용하는지 여부를 지정합니다. 기본적으로 해당 값은 false입니다. |
element | 클래스의 특성 |
block final form nillable |
특성은 element로 변환됩니다. final 특성은 global 요소에만 적용됩니다(로컬 요소에는 적용되지 않음). 그 결과 기타 유형이 이 특성에서 파생될 수 있는지 여부가 판별됩니다. 해당 값은 #all 또는 (extension | restriction)의 목록이 될 수 있습니다. 해당 값이 #all인 경우, 어떤 유형의 파생도 허용되지 않습니다. 특정 사항을 제어하도록 모든 restriction 또는 extenstion 키워드의 공백 분리형 목록으로 값을 설정할 수 있습니다. 기본값은 스키마의 finalDefault로 설정됩니다. 스테레오타입 특성 form은 속성 이름을 인스턴스 문서에 규정해야 하는지 여부를 판별합니다. 해당 값은 qualified, unqualified 또는 default 중 하나가 될 수 있습니다. 값이 default인 경우, 해당 값의 기본값은 기본값이 unqualified인 스키마의 elementFormDefault로 됩니다. boolean 특성 nillable 은 xsi:nil이 이 요소의 인스턴스에 사용될 수 있는지 여부를 판별합니다. 기본적으로 해당 값은 false입니다. |
enumeration | 클래스 | anonymous |
클래스는 simple type을 나타내는 다른 클래스와 일반화 관계가 있는 경우 XSD enumeration으로 변환됩니다. anonymous 특성은 열거 패싯에 대한 상위 레벨 simple type 선언이 스키마에 작성되어 있는지를 판별합니다. 해당 값은 true 또는 false 중 하나가 될 수 있습니다. 값이 true인 경우, 어떤 유형 선언도 생성되지 않으며, 이 클래스에 대한 모든 참조는 anonymous 유형을 속성 또는 요소의 유형으로 갖는 속성 또는 요소 선언으로 변환됩니다. 기본적으로 해당 값은 false입니다. |
글로벌 | 클래스 | |
이 스테레오타입을 갖는 클래스는 상위 레벨 요소 또는 속성 선언으로 변환됩니다. 클래스는 하나의 속성만 가지고 있어야 합니다. 특성이 <<속성>> 스테레오타입 또는 키워드를 가지고 있는 경우, 클래스가 상위 레벨 속성으로 변환됩니다. 그렇지 않은 경우, 특성은 상위 레벨 요소가 됩니다. 속성 또는 요소 이름이 특성 이름과 같으며 유형이 특성 유형입니다. |
listOf | 종속성 | 종속성의 클라이언트는 항목 유형이 종속성의 공급자인 XSD 목록으로 변환됩니다. 이러한 종속성은 각각 단순 유형을 나타내는 두 클래스 사이에 하나만 있을 수 있습니다. | |
modelGroup | 클래스 |
anonymous modelGroup |
클래스는 sequence 컨텐츠 모델을 포함하는 재사용가능한 이름 지정 모델 그룹으로 변환됩니다. anonymous 특성은 상위 레벨 그룹 선언이 스키마에 작성되어 있는지를 판별합니다. 해당 값은 true 또는 false 중 하나가 될 수 있습니다. 값이 true인 경우에는 그룹 선언이 생성되지 않습니다. 또한 이 클래스에 대한 모든 참조가 중첩된 모델 그룹으로 변환됩니다. 값이 false인 경우, 클래스에 대한 참조는 모델 그룹 참조로 변환됩니다. 기본적으로 해당 값은 false입니다. modelGroup 특성은 그룹의 컨텐츠 모델을 판별합니다. modelGroup의 값은 all, choice 또는 또는 sequence가 될 수 있습니다. 기본값은 sequence입니다. Constraint : modelGroup 값이 all인 경우 anonymous의 값은 false여야 합니다. 그렇지 않은 경우, constraint 위반이 발생합니다. |
스키마 | 패키지 |
attributeFormDefault blockDefault elementFormDefault finalDefault targetNamespace targetNamespacePrefix |
패키지 및 해당 컨텐츠는 XSD 스키마로 변환됩니다. 패키지의 이름은 스키마(파일)의 이름이 됩니다. attributeFormDefault 특성은 로컬 속성 선언의 규정된 이름 사용 여부를 판별합니다. 해당 값은 qualified 또는 unqualified 중 하나가 될 수 있습니다. 기본값은 unqualified입니다. blockDefault 특성은 복합 유형 및 요소 선언에 사용된 block 속성에 대한 기본값을 설정합니다. 블록 속성은 요소 대체 또는 유형 대체의 차단 여부를 판별합니다. 이 속성이 포함할 수 있는 값은 #all 또는 하나 이상의 (extension 또는 restriction 또는 substitution)로 구성된 공백 분리형 목록입니다.
elementFormDefault 특성은 로컬 요소 선언의
규정된 이름 사용 여부를 판별합니다. 해당 값은
qualified 또는 unqualified 중
하나가 될 수 있습니다. 기본값은
unqualified입니다. finalDefault 특성은 complex type, simple type 및 element 선언에 사용된 final 속성에 대한 기본값을 설정합니다. final 속성은 유형 파생 불허 여부를 판별합니다. 이 속성이 포함할 수 있는 값은 #all 또는 하나 이상의 (extension, restriction, substitution, list 또는 union)으로 구성된 공백 분리형 목록입니다. targetNamespace 및 targetNamespacePrefix의 값을 설정할 경우, 이 값은 해당하는 변환 특성 대상 이름 공간 및 대상 이름 공간 접두어에 대해 설정한 값을 각각 겹쳐씁니다. |
simpleType | 클래스 |
anonymous final fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace |
클래스가 XSD 빌드인 데이터 유형 또는 다른 단순 유형 또는 XSD enumeration 유형과 일반화 관계가 있는 경우, 해당 클래스는 단순 유형으로 변환됩니다. anonymous 특성 값은 true 또는 false일 수 있습니다. 값이 true이면 클래스는 anonymous 유형으로 처리되어 어떤 상위 레벨 유형 선언도 생성되지 않습니다. final 특성은 기타 유형이 이 특성에서 파생될 수 있는지 여부를 판별합니다. 해당 값은 #all 또는 (extenstion 또는 restriction 또는 list 또는 union)의 목록이 될 수 있습니다. 해당 값이 #all인 경우, 어떤 유형의 파생도 허용되지 않습니다.특정 제어를 위해 restriction, extension, list 또는 union 키워드 중 어느 것에 대해서도 공백 분리형 목록이 되도록 값을 설정할 수 있습니다 그밖의 특성은 XSD 스키마에 의해 정의된 패싯을 표시합니다. 이 패싯을 사용하여 유효값 범위를 지정할 수 있고, 값의 길이 및 정밀도를 제한하거나 유효값과 일치하는 일반 표현식을 지정하거나 빌드인 XSD 유형의 제한으로 파생되는 simple type의 공백 처리를 지정할 수 있습니다. 자세한 내용은 패싯의 의미 표를 참조하십시오. 특히 이 패싯이 전부 모든 simple type에 적용되는 것은 아닙니다. 예를 들어, 문자열, normalizedString 및 토큰에서 파생되는 단순 유형의 경우, 적용 가능한 패싯은 length, minLength, maxLength, 패턴 및 whitespace입니다. 자세한 내용은 simple type 및 적용 가능한 패싯 표를 참조하십시오. |
unionOf | 종속성 | 종속성의 클라이언트는 종속성의 공급자가 구성원 중 하나로 속해 있는 XSD union으로 변환됩니다. 단순 유형을 나타내는 클래스는 다른 단순 유형 클래스에 대해 이러한 종속성을 두 개 이상 가질 수 있습니다. | |
wildcard | 클래스의 특성 | processContents namespace |
UML 특성은 wildcard 요소로 변환됩니다. 특성에 키워드(예: attribute 또는 스테레오타입 <<attribute>> 및 wildcard)가 있는 경우 wildcard 카드 속성으로 변환됩니다. processContents 특성은 바꾸기 속성 또는 요소에 대한 유효성 검증의 정도를 판별합니다. 특성 값이 skip인 경우, 스키마 프로세서는 유효성 검증을 수행하지 않습니다. 특성 값이 lax인 경우, 스키마 프로세서는 선언을 찾을 수 있는 속성이나 요소의 유효성을 검증하여 유효하지 않으면 오류를 발생시킵니다. 특성 값이 strict인 경우, 스키마 프로세서는 이름 공간과 연관된 스키마 문서 찾기를 시도하여 모든 속성 또는 요소의 유효성을 검증합니다. 기본적으로 해당 값은 strict으로 설정됩니다. namespace 특성은 바꾸기 속성 또는 요소가 들어갈 이름 공간을 지정합니다. 허용되는 값은 (##any, ##other, anyURI 목록, ##targetNamespace 또는 ##local) 중 하나입니다. 값이 ##any인 경우, 바꾸기 요소 또는 속성은 어떤 이름 공간에도 있을 수 있거나 있을 수 없습니다. 값이 ##other인 경우, 바꾸기 요소 또는 속성은 문서의 대상 이름 공간 외에 어떤 다른 이름 공간에도 있을 수 있으나 하나의 이름 공간에 있어야 합니다. 스키마 문서에 어떤 대상 이름 공간도 들어 있지 않은 경우, 바꾸기 요소나 속성은 어떤 이름 공간이라도 포함할 수 있으나 하나만 포함해야 합니다. 그렇지 않으면, 해당 값은 ##targetNamespace, #local 또는 특정 이름 공간 중 어느 하나 또는 모두를 포함하는 공백 분리형 값 목록이 될 수 있습니다. ##targetNamespace는 바꾸기 요소 또는 속성이 스키마 문서의 대상 이름 공간에 들어갈 수 있음을 표시하고 ##local은 바꾸기 요소 또는 속성이 이름 공간에 없을 수 있음을 표시합니다. |
모델링할 스키마가 해당 요소를 자세히 지정할 필요가 없는 경우에는 스테레오타입 대신에 키워드를 사용할 수 있습니다. 다음 표에서는 UML에서 XSD로 변환에 지원되는 키워드를 설명합니다.
키워드 | UML 요소에 적용 가능 | 주석 |
어노테이션 | 주석 | 주석은 "appinfo" 또는 "문서" 어노테이션으로 변환됩니다. |
속성 | 클래스의 특성 | 특성의 다중성이 [0..1]인 경우, 특성은 복합 유형의 속성으로 변환됩니다. |
attributeGroup | 클래스 | 클래스는 속성 그룹으로 변환됩니다. |
complexType | 클래스 | 클래스는 복합 유형으로 변환됩니다. |
요소 | 특성 | 특성은 복합 유형 요소로 변환됩니다. |
열거 | 클래스 | 클래스는 단순 유형을 나타내는 다른 클래스와 일반화 관계가 있는 경우 XSD 열거로 변환됩니다. |
글로벌 | 클래스 |
이 키워드를 갖는 클래스는 상위 레벨 요소 또는 속성 선언으로 변환됩니다. 클래스는 하나의 속성만 가지고 있어야 합니다. 특성이 <<attribute>> 스테레오타입 또는 속성 키워드를 가지고 있는 경우, 클래스가 상위 레벨 속성으로 변환됩니다. 그렇지 않은 경우, 특성은 상위 레벨 요소가 됩니다. 요소 또는 속성의 이름은 특성의 이름에서 파생되고, 유형은 특성 유형에서 파생됩니다. |
listOf | 두 단순 유형을 표시하는 두 클래스 간 종속성 | 종속성의 클라이언트는 항목 유형이 종속성의 공급자인 XSD 목록으로 변환됩니다. 이러한 종속성은 각각 단순 유형을 나타내는 두 클래스 사이에 하나만 있을 수 있습니다. |
modelGroup | 클래스 | 클래스는 시퀀스 컨텐츠 모델을 포함하는 재사용가능한 이름 지정 모델 그룹으로 변환됩니다. |
스키마 | 패키지 |
패키지 및 해당 컨텐츠는 XSD 스키마로 변환됩니다. 패키지의 이름은 스키마(파일)의 이름이 됩니다. 스키마 키워드를 사용할 경우, 변환 특성, 대상 이름 공간 및 대상 이름 공간 접두어를 각각 적절한 값으로 설정하여 대상 이름 공간 및 대상 이름 공간 접두어를 지정해야 합니다. |
simpleType | 클래스 | 클래스가 XSD 빌드인 데이터 유형 또는 다른 단순 유형과 일반화 관계가 있는 경우, 해당 클래스는 단순 유형으로 변환됩니다. |
unionOf | 두 단순 유형을 표시하는 두 클래스 간 종속성 | 종속성의 클라이언트는 종속성의 공급자가 구성원 중 하나로 속해 있는 XSD 유니온으로 변환됩니다. 단순 유형을 나타내는 클래스는 다른 단순 유형 클래스에 대해 이러한 종속성을 두 개 이상 가질 수 있습니다. |
와일드 카드 | 특성 |
UML 특성은 와일드 카드 요소로 변환됩니다. 특성에 키워드(예: 속성 및 와일드 카드)가 있으면 와일드 카드 속성으로 변환됩니다. |
44개의 단순 유형이 XML 스키마 권장사항에 빌드됩니다. 이 단순 유형은 문자열, 숫자, 날짜 및 시간 값과 같은 공통 데이터 유형을 표시하고, XML 1.0에 속성 유형에 대한 레거시 유형도 포함합니다. 또한 XSD는 단순 유형의 유효값 범위를 지정하거나 값의 길이 및 정밀도를 제한하거나 유효값 목록을 열거하거나 유효값과 일치하는 일반 표현식을 지정하는 데 사용할 수 있는 12개의 제약 조건 패싯도 제공합니다.
패싯을 적절한 값으로 설정하여 제한하는 방식으로 빌드인 유형 또는 기타 단순 유형에서 새 단순 유형을 파생할 수 있습니다. 이 작업을 수행하기 위해서는 UML 모델에서 사용 가능한 빌드인 유형을 표시해야 합니다.
빌드인 단순 유형은 클래스와 같이 모델링되고 XSDDataTypes라는 모델 라이브러리에서 사용 가능하게 작성됩니다. 이들 유형에 액세스하기 위해서는 XSDDataTypes 라이브러리를 사용자의 모델에 가져와야 합니다. XSDDataTypes 모델 라이브러리를 가져오려면, 모델 탐색기에서 모델의 루트(모델 자체)를 마우스 오른쪽 단추로 클릭하고, 모델 라이브러리 가져오기...를 선택한 다음, 드롭 다운 목록에서 XSDDataTypes를 선택하십시오.
새 단순 유형(사용자 정의 단순 유형)을 정의하기 위해서는 XSDDataTypes 모델의 해당 클래스에서 특수화하고 <<simpleType>> 스테레오타입의 특성을 사용하여 정의된 유형의 값을 제한해야 합니다. 예를 들면 다음과 같습니다.
<<simpleType>>의 maxInclusive 특성을 100으로 설정하여 수량의 최대값을 대략 100으로 제한할 수 있습니다.
UML에서 XML 스키마 모델링의 목적은 XML 스키마의 비주얼 표시를 작성한 다음 UML에서 XSD로 변환을 사용하여 스키마를 생성하는 데 있습니다. 분석 결과, XML 스키마의 기본 기능성은 대부분 UML 모델 요소로 표시될 수 있는 것으로 나타났습니다. 다음 표에서는 UML에 있는 개념과 XML 스키마 정의(XSD)에 있는 대응 개념 간에 맵핑 서브세트를 표시합니다.
UML 개념 | XML 스키마 개념 |
패키지 | 접두어를 포함한 단일 이름 공간 |
클래스 | 유형 및 재사용가능한 그룹
|
열거 | XSD 문자열 단순 유형을 열거 패싯으로 제한하면 UML 열거 리터럴과 같습니다. 적용된 XSD 프로파일의 <<enumeration>> 스테레오타입이 지정된 UML 클래스에서 발생하는 조건과는 다르다는 점에 주의하십시오. 스테레오타입 UML 클래스를 사용하면 일반 XSD 열거가 더 많이 허용됩니다. |
클래스의 특성 | 복합 유형의 요소 및 속성 |
연관(집계) | 포함된 요소의 하위 요소(복합 유형) |
일반화 | 유형 파생
|
오브젝트 ID | 사용자 지정 키 필드 또는 명시적 ID 메커니즘(아직 구현되지 않음) |
UML 요소 | XSD 요소 | 주석 |
<<schema>> 스테레오타입이 지정된 패키지 | 대상 이름 공간 및 대상 이름 공간 접두어를 갖는 스키마 | 패키지 내의 컨텐츠는 스키마를
.xsd 파일로 작성합니다. 스키마 파일의 이름은 패키지의 이름과 같습니다. <<schema>> 스테레오타입의 특성, attributeFormDefault 및 elementFormDefault를 사용하여 생성된 스키마에서 attributeFormDefault 및 elementFormDefault 속성을 지정할 수 있습니다. 스테레오타입 대신 schema 키워드를 사용하는 경우 변환 특성, 대상 이름 공간 및 대상 이름 공간 접두부의 값을 각각 설정하여 대상 이름 공간 및 해당 접두부를 제공해야 합니다. |
UML 요소 | XSD 요소 | 주석 |
<<complexType>> 스테레오타입을 갖는 클래스 | 복합 유형 | 스테레오타입 특성 modelGroup이 가능한 값 모두, 선택사항 및 시퀀스 중 하나로 설정되지 않은 경우, 복합 유형은 시퀀스 모델 그룹으로 생성됩니다. |
complexType 키워드를 갖는 클래스 | 복합 유형 | 복합 유형은 시퀀스 모델 그룹과 함께 생성됩니다. |
키워드나 스테레오타입을 갖고 있지 않은 클래스 | 복합 유형 | 복합 유형은 변환 특성, 표시되지 않은 클래스 처리의 값을 true로 설정한 경우에만 생성됩니다. 그렇지 않은 경우에는 클래스를 무시합니다. 복합 유형이 생성된 경우, 해당 모델 그룹은 시퀀스로 설정됩니다. |
특성 | 복합 유형의 요소 | |
<<attribute>> 스테레오타입 또는 속성 키워드를 갖는 특성. | 복합 유형의 속성 |
특성 유형이 단순 유형이고 [0..1]의 다중성을 나타내는 경우에만 특성이 속성으로 변환됩니다. 그렇지 않은 경우, 특성은 요소로 변환됩니다. 기본값을 제공하는 경우, 특성은 기본값을 갖는 선택적 속성으로 변환됩니다. 특성을 읽기 전용으로 작성하고 기본값을 제공할 경우, 해당 특성은 값이 기본값으로 고정된 속성으로 변환됩니다. 두 가지 경우 모두 특성의 다중성을 [0..1]로 설정해야 합니다. <<attribute>> 스테레오타입의 사용 특성을 사용하여 속성을 선택적 또는 필수로 작성할 수 있습니다. 기본값을 제공하고 특성을 읽기 전용으로 작성하는 것 외에 사용 값을 필수로 설정할 경우, 기본값과 읽기 전용 스펙이 무시됩니다. |
UML 요소 | XSD 요소 | 주석 |
하나의 특성을 포함하는 <<global>> 스테레오타입 또는 "글로벌" 키워드가 지정된 클래스. | 글로벌(상위 레벨) 요소 또는 속성. |
클래스는 하나의 속성만 가지고 있어야 합니다. 특성이 <<attribute>> 스테레오타입 또는 속성 키워드를 가지고 있는 경우, 클래스가 상위 레벨 속성으로 변환됩니다. 그렇지 않으면 최상위 레벨 요소가 됩니다. 요소 또는 속성의 이름은 특성의 이름에서 파생되고, 유형은 특성의 유형에서 파생됩니다. |
UML 요소 | XSD 요소 | 주석 |
<<global>> 스테레오타입이 적용된 클래스 사이의 일반화 관계. | <<global>> 스테레오타입이 지정된 클래스로 대표되는 글로벌 요소로 구성된 대체 그룹. | 글로벌 요소의 대체 그룹을 형성하려면 해당 유형(글래스)이 동등한 일반화 관계여야 합니다. |
아래 예에서 글로벌 요소, 드레스는 대체 그룹의 헤드이고 글로벌 요소,
셔츠 및 바지는 구성원입니다. 이 요소의 유형은 글로벌 요소 사이의
일반화 관계와 동등한 일반화 관계에 있음에 주의하십시오.
UML 요소 | XSD 요소 | 주석 |
<<simpleType>> 스테레오타입 또는 simpleType 키워드를 갖는 클래스 |
사용자 정의 단순 유형. 빌드인 단순 유형 또는 다른 사용자 정의 단순 유형 제한 |
빌드인 단순 유형 또는 다른 사용자 정의 단순 유형 또는 XSD 열거 유형과 일반화 관계가 있어야 합니다. |
UML 요소 | XSD 요소 | 주석 |
<<enumeration>> 스테레오타입 또는 열거 키워드를 갖는 클래스 | XSD 열거. 열거 패싯이 지정된 단순 유형. |
빌드인 단순 유형 또는 다른 사용자 정의 단순 유형과 일반화 관계가 있어야 합니다. |
UML 요소 | XSD 요소 | 주석 |
UML 열거 | XSD 열거, 제한 기본 xsd:문자열을 갖고 있고 열거 패싯이 지정되어 있는 단순 유형 | 다른 어떤 단순 유형과의 일반화 관계도 필요하지 않습니다. |
UML 요소 | XSD 요소 | 주석 |
<<modelGroup>> 스테레오타입을 갖는 클래스 | 이름 지정 모델 그룹 | 스테레오타입 특성 modelGroup이 가능한 값 모두, 선택사항 및 시퀀스 중 하나로 설정되지 않은 경우, 모델 그룹은 시퀀스 모델 그룹과 함께 생성됩니다. |
modelGroup 키워드를 갖는 클래스 | 이름 지정 모델 그룹 | 이름 지정 모델 그룹은 시퀀스 모델 그룹과 함께 생성됩니다. |
<<attributeGroup>> 스테레오타입 또는 attributeGroup 키워드를 갖는 클래스 | 속성 그룹 | 클래스의 각 특성은, 단순 유형으로 변환될 수 있고 다중성 [0..1]을
갖는 유형이면 속성 그룹의 구성원으로 변환됩니다.
그렇지 않은 경우에는 특성을 무시합니다. 특성은 XSD 속성으로만 변환될 수 있으므로, 반드시 <<attribute>> 스테레오타입을 특성에 적용할 필요가 없습니다. 그러나 추가 특성을 지정해야 할 경우(예: 필수, 양식 등), 해당 속성에 대해 <<attribute>> 스테레오타입을 적용하고 스테레오타입의 특성을 적절한 값으로 설정해야 합니다. |
UML 요소 | XSD 요소 | 주석 |
클래스 A는 다른 클래스 B에서 파생됩니다. | 복합 유형 B는 복합 유형 A의 복합 컨텐츠 확장자입니다. |
클래스 A 또는 클래스 B는 <<complexType>> 스테레오타입 또는 complexType 키워드를 가질 수 있습니다. 클래스 A, 클래스 B 모두 "모두" 모델 그룹 또는 컨텐츠 모델을 가질 수 없습니다. "모두" 모델 그룹을 갖는 클래스를 확장하려고 시도하면 제약 조건을 위반하게 됩니다. 클래스 B는 스테레오타입 <<modelGroup>> 또는 <<attributeGroup>>도 가질 수 없고 키워드 modelGroup 또는 attributeGroup도 가질 수 없습니다. 다시 말해서, 복합 유형은 모델 그룹이나 속성 그룹을 확장할 수 없습니다. |
클래스 A는 <<simpleType>> 스테레오타입 또는 simpleType 키워드를 갖는 다른 클래스 B에서 파생됩니다. |
단순 유형의 단순 컨텐츠 확장자인 복합 유형 B. 클래스 B의 모든 특성은 단순 컨텐츠 확장자의 속성이 됩니다. |
단순 유형에서 파생하는 유일한 목적은 속성 추가입니다. 따라서 클래스 B의 특성 유형은 단순 유형이고 해당 다중성은 [0..1]이어야 합니다. 그렇지 않으면 모델은 제한조건을 위반합니다. |
UML 요소 | XSD 요소 | 주석 |
클래스 A -> 클래스 B로 연관(직접 또는 컴포지트 집계) | 유형이 복합 유형 B인 복합 유형 A의 요소 | 요소 이름은 연관 종료의 역할 이름으로 판별됩니다. |
UML 요소 | XSD 요소 | 주석 |
클래스 A는 클래스 B 유형의 특성을 하나 이상 포함합니다. | 유형이 복합 유형 B인 복합 유형 A의 요소 | 요소 이름은 특성의 이름으로 판별됩니다. |
UML 요소 | XSD 요소 | 주석 |
클래스 A -> <<modelGroup>> 스테레오타입이 지정된 클래스 B로 연관(직접 연관 또는 컴포지트 집계) 클래스 A -> <<attributeGroup>> 스테레오타입을 갖는 클래스 C. |
복합 유형 A의 모델 그룹 참조. 복합 유형 A의 속성 그룹 참조. |
|
<<modelGroup>> 스테레오타입이 지정된 클래스 A -> 마찬가지로 <<modelGroup>> 스테레오타입이 지정된 클래스 B로 연관(직접 연관 또는 컴포지트 집계) | 클래스 A로 대표되는 모델 그룹의 모델 그룹 참조 | |
<<attributeGroup>> 스테레오타입이 지정된 클래스 A -> 마찬가지로 <<attributeGroup>> 스테레오타입이 지정된 클래스 B로 연관(직접 연관 또는 컴포지트 집계) | 클래스 A로 대표되는 속성 그룹의 속성 그룹 참조 |
UML 요소 | XSD 요소 | 주석 |
두 단순 유형 간에 <<listOf>> 스테레오타입 또는 listOf 키워드를 갖는 종속성 | 목록 유형. 종속성의 클라이언트는 단순 유형 즉, 종속성의 공급자 목록으로 변환됩니다. |
종속성의 클라이언트 및 공급자는 양쪽 모두 단순 유형이어야 하고, 양자간에 <<listOf>> 종속성은 하나만 있어야 합니다. 이 두 클래스 사이에는 다른 어떤 관계도 없어야 합니다. |
클라이언트 단순 유형과 하나 이상의 공급자 간에 <<unionOf>> 스테레오타입 또는 unionOf 키워드를 갖는 종속성 | 유니온 유형.
종속성의 클라이언트는 종속성의 공급자인 유니온에 해당하는 단순 유형으로 변환됩니다. |
종속성의 클라이언트 및 공급자는 양쪽 모두 단순 유형이어야 하고, 양자간에 <<unionOf>> 종속성이 하나 이상 있을 수 있습니다. 이 두 클래스 사이에는 다른 어떤 관계도 없어야 합니다. |
UML 요소 | XSD 요소 | 주석 |
<<complexType>> 스테레오타입 및 anonymous = true 스테레오타입 특성이 지정된 클래스 A는 복합 유형을 대표하는 다른 클래스 B로 참조됩니다. |
클래스 A는 익명 복합 유형으로 변환됩니다. 참조는 복합 유형(클래스 B로 표시됨)의 속성 또는 요소로 변환됩니다. 요소 또는 속성의 유형은 이 익명 유형에 따라 정의됩니다. |
요소 또는 속성 이름은 연관 종료의 역할 이름이나 특성 이름으로 판별됩니다. 클래스 A는 익명으로 지정되므로 이 클래스에 대해 어떤 상위 레벨 복합 유형 선언도 생성되지 않습니다. |
UML 요소 | XSD 요소 | 주석 |
스테레오타입 <<simpleType>> 및 스테레오타입 특성 anonymous = true를 가지고 있고 복합 유형을 표시하는 다른 클래스 B에 의해 참조되는 클래스 A |
클래스 A는 익명 단순 유형으로 변환됩니다. 참조는 복합 유형(클래스 B로 표시됨)의 속성 또는 요소로 변환됩니다. 요소 또는 속성의 유형은 이 익명 유형에 따라 정의됩니다. |
요소 또는 속성 이름은 연관 종료의 역할 이름이나 특성 이름으로 판별됩니다. 클래스 A는 익명으로 지정되므로 이 클래스에 대해 어떤 상위 레벨 단순 유형 선언도 생성되지 않습니다. |
UML 요소 | XSD 요소 | 주석 |
스테레오타입 <<enumeration>> 및 스테레오타입 특성이 anonymous = true를 가지고 있고 복합 유형을 표시하는 다른 클래스 B에 의해 참조되는 클래스 A |
클래스 A는 익명 열거로 변환됩니다. 참조는 복합 유형(클래스 B로 표시됨)의 속성 또는 요소로 변환됩니다. 요소 또는 속성의 유형은 이 익명 유형에 따라 정의됩니다. |
요소 또는 속성 이름은 연관 종료의 역할 이름이나 특성 이름으로 판별됩니다. 클래스 A는 익명으로 지정되므로 이 클래스에 대해 열거 패싯을 갖는 어떤 상위 레벨 단순 유형 선언도 생성되지 않습니다. |
UML 요소 | XSD 요소 | 주석 |
스테레오타입 <<modelGroup>> 및 특성 값 anonymous = true를 갖는 클래스 A와 클래스 B 간 연관(직접 또는 컴포지트 집계). |
이름 지정 모델 그룹이 클래스 B로 표시된 모델 그룹을 포함하는 클래스 A를 표시하는 복합 유형. |
이 맵핑은 A도 B도 컨텐츠 모델 모두를 포함하지 않는 경우에만 유효합니다. |
스테레오타입 <<modelGroup>> 을 갖는 클래스 A와 스테레오타입 <<modelGroup>> 및 특성 값 anonymous = true를 갖는 클래스 B 간 연관(직접 또는 컴포지트 집계). | 이름 지정 모델 그룹이 클래스 B로 표시된 모델 그룹을 포함하는 클래스 A를 표시하는 이름 지정 모델 그룹. | 이 맵핑은 A도 B도 컨텐츠 모델 모두를 포함하지 않는 경우에만 유효합니다. |
모델 그룹에 대한 위의 참조는 클래스 특성을 사용하여 모델링할 수도 있습니다.
UML 요소 | XSD 요소 | 주석 |
유형이 스테레오타입 <<modelGroup>> 및 특성 값 anonymous = true를 갖는 클래스 B인 특성을 포함하는 클래스 A. | 이름 지정 모델 그룹이 클래스 B로 표시된 모델 그룹을 포함하는 클래스 A를 표시하는 복합 유형. | 이 맵핑은 A도 B도 컨텐츠 모델 모두를 포함하지 않는 경우에만 유효합니다. |
유형이 스테레오타입 <<modelGroup>> 및 특성 값 anonymous = true를 갖는 클래스 B인 특성을 포함하는 스테레오타입 <<modelGroup>>을 갖는 클래스 A. | 이름 지정 모델 그룹이 클래스 B로 표시된 모델 그룹을 포함하는 클래스 A를 표시하는 이름 지정 모델 그룹. | 이 맵핑은 A도 B도 컨텐츠 모델 모두를 포함하지 않는 경우에만 유효합니다. |
UML 요소 | XSD 요소 | 주석 |
A와 B 간에 연관이 있는 중첩된 클래스 B를 포함하는 클래스 A. | 익명 유형 B 중 복합 유형 A의 요소 |
중첩 클래스와 중첩된 클래스 사이에 연관이 있어야 합니다. 클래스 A에 연관 대신 B 유형의 특성이 들어 있는 경우 같은 스키마 컴포넌트를 확보합니다. |
UML 요소 | XSD 요소 | 주석 |
<<simpleType>> 스테레오타입 또는 simpleType 키워드를 갖는 중첩된 클래스 B를 포함하는 클래스 A(이 경우 A는 B와 연관이 있어야 함). | 익명 단순 유형 B 중 복합 유형 A의 요소. |
중첩 클래스와 중첩된 클래스 사이에 연관이 있어야 합니다. 클래스 A에 연관 대신 B 유형의 특성이 들어 있는 경우 같은 스키마 컴포넌트를 확보합니다. |
UML 요소 | XSD 요소 | 주석 |
주석 | 어노테이션 | UML 요소의 주석은 XSD 문서 어노테이션으로 변환됩니다. |
<<annotation>> 스테레오타입이 지정된 주석 |
어노테이션 | 어노테이션 유형(문서 또는
appinfo )은 <<annotation>>
스테레오타입의 유형 특성 값에 따라 다릅니다. 유형
값이 문서 인 경우 유형 값으로
문서 가 작성됩니다. 값이 applicationInfo 인 경우
appinfo 요소가 작성됩니다. 유형 의 기본값은
문서 입니다. |
UML 요소 | XSD 요소 | 주석 |
<<wildcard>> 스테레오타입 또는
와일드 카드 키워드가 지정된 특성 |
묶인 복합 유형 또는 모델 그룹의 와일드 카드 요소 | 바꾸기 요소가 들어 있을 수 있는 이름 공간 및 바꾸기의 유효성을
검증하는 엄격한 정도는 <<wildcard>> 스테레오타입의
이름 공간 및 processContents 특성으로 판별됩니다. |
UML 요소 | XSD 요소 | 주석 |
<<attribute>> 스테레오타입 및
<<wildcard>> 또는 키워드, 속성 및 와일드 카드로 지정된 특성 |
묶인 복합 유형 또는 속성 그룹의 와일드 카드 속성 | 바꾸기 속성이 들어 있을 수 있는 이름 공간 및 바꾸기 속성의 유효성을
검증하는 엄격한 정도는 <<wildcard>> 스테레오타입의
이름 공간 및 processContents 특성으로 판별됩니다. |
UML에서 XML 스키마 모델링의 목적은 XML 스키마의 비주얼 표시를 작성한 다음 UML에서 XSD로 변환을 사용하여 스키마를 생성하는 데 있습니다. 일반적으로 사용자의 모델은 XSD 요소를 표시하는 요소와 XSD와 관련이 없는 요소를 모두 포함합니다. 이러한 모델을 빌드할 때는 다음 가이드라인에 따를 것을 권장합니다.
이 변환에는 다음 XSD 요소를 생성하기 위한 룰이 구현되지 않았습니다.
패싯 | 의미 |
fractionDigits | 소수부 자릿수는 x 이하여야 합니다. |
길이 | 값의 길이는 x여야 합니다. |
maxExclusive | 값은 x 미만이어야 합니다. |
maxInclusive | 값은 x 이하여야 합니다. |
maxLength | 값의 길이는 x 이하여야 합니다. |
minExclusive | 값은 x보다 커야 합니다. |
minInclusive | 값은 x 이상이어야 합니다. |
minLength | 값의 길이는 x 이상이어야 합니다. |
pattern | x는 값과 일치하는 일반 표현식 중 하나입니다. |
totalDigits | 유효 숫자의 자릿수는 x 이하여야 합니다. |
공백 | 스키마 프로세서는 x에 따라 공백을 유지하거나 바꾸거나 없애야 합니다. |
다음 표는 빌드인 데이터 유형 및 적용 가능한 패싯을 하나하나 열거합니다. W3C 권장사항에는 열거가 패싯으로 지정되어 있지만 이 표에는 열거가 포함되어 있지 않습니다. 열거는 <<enumeration>> 스테레오타입을 갖는 클래스를 사용하거나 UML 열거를 사용하여 표시됩니다.
데이터 유형(제한 기본) | 적용 가능한 패싯 |
ENTITY, ID, IDREF |
길이, 최대 길이, 최소 길이 공백 값은 제거로 고정됩니다. 패턴은 [\i-[:]][\c-[:]]*입니다. |
IDREFS |
길이, 최대 길이, 패턴 최소길이는 1입니다. 공백은 제거 값으로 고정됩니다. |
이름 |
길이, 최대 길이, 최소 길이 공백은 제거 값으로 고정됩니다. 패턴은 \i\c*입니다. |
NCName |
길이, 최대 길이, 최소 길이 공백 값은 제거입니다. 패턴은 [\i-[:]][\c-[:]]*입니다. |
NMTOKEN |
길이, 최대 길이, 최소 길이 공백 값은 제거로 고정됩니다. 패턴은 \c+입니다. |
NMTOKENS |
길이, 최대 길이 최소길이는 1입니다. 공백 값은 제거로 고정됩니다. |
NOTATION |
길이, 최대 길이, 최소 길이, 패턴 공백 값은 제거로 고정됩니다. |
QNAME |
길이, 최대 길이, 최소 길이, 패턴 공백 값은 제거로 고정됩니다. |
anyURI, base64Binary, hexBinary |
길이, 최대 길이, 최소 길이, 패턴 공백 값은 제거로 고정됩니다. |
언어 |
길이, 최대 길이, 최소 길이 공백은 제거 값으로 고정됩니다. 패턴은 ([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})*입니다. |
float, double |
maxExclusive, maxInclusive, minExclusive, minExclusive,
패턴 공백 값은 제거로 고정됩니다. |
십진수 | maxExclusive, maxInclusive, minExclusive,
minExclusive, fractionDigits, totalDigits, 패턴 공백은 값이 제거로 고정됩니다. |
정수 데이터 유형(정수, 바이트,
int, long, negativeInteger, nonNegativeInteger,
nonPositiveInteger, positiveInteger, unsignedByte, unsignedInt,
unsignedLong, unsignedShort) |
maxExclusive, maxInclusive, minExclusive, minExclusive, totalDigits, 패턴 fractionDigits는 값이 0으로 고정됩니다. 공백 값은 제거로 고정됩니다. |
날짜 및 시간 데이터 유형(날짜, 시간, dateTime,
gYear, gYearMonth, gMonth, gMonthDay, gDay, 기간) |
maxExclusive, maxInclusive, minExclusive, minExclusive,
패턴 공백은 값이 제거로 고정됩니다. |
문자열, normalizedString, 토큰 | 길이, maxLength, minLength, 패턴 공백은 문자열의 경우 유지, normalizedString의 경우 바꾸기, 토큰의 경우 제거입니다. |