이 항목에서는 스키마 유추 과정에서 XML 문서의 노드 형식을 XSD(XML 스키마 정의 언어) 구조로 변환하는 방법을 설명합니다.
요소 유추 규칙
이 단원에서는 요소 선언의 유추 규칙에 대해 설명합니다. 유추되는 8개의 요소 선언 구조는 다음과 같습니다.
단순 형식 요소
빈 요소
특성을 가진 빈 요소
특성 및 단순 내용을 가진 요소
자식 요소 시퀀스를 가진 요소
자식 요소 시퀀스와 특성을 가진 요소
자식 요소 선택 시퀀스를 가진 요소
자식 요소 선택 시퀀스와 특성을 가진 요소
![]() |
---|
모든 complexType 선언은 익명 형식으로 유추됩니다.유추되는 요소 중 루트 요소만이 전역 요소이며, 기타 모든 요소는 로컬 요소입니다. |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
단순 형식 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 단순 형식 요소에 대해 유추된 스키마를 나타냅니다.
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root>text</root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root" type="xs:string" /> </xs:schema> |
빈 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 빈 요소에 대해 유추된 스키마를 나타냅니다.
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <empty/> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="empty" /> </xs:schema> |
특성을 가진 빈 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 특성을 가진 빈 요소에 대해 유추된 스키마를 나타냅니다.
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <empty attribute1="text"/> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="empty"> <xs:complexType> <xs:attribute name="attribute1" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> |
특성 및 단순 내용을 가진 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 특성 및 단순 내용을 가진 요소에 대해 유추된 스키마를 나타냅니다.
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root attribute1="text">value</root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="attribute1" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:schema> |
자식 요소 시퀀스를 가진 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 자식 요소 시퀀스를 가진 요소에 대해 유추된 스키마를 나타냅니다.
![]() |
---|
요소에 자식 요소가 한 개만 있더라도 여전히 시퀀스로 간주됩니다. |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root> <subElement/> </root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="subElement" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
자식 요소 시퀀스와 특성을 가진 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 자식 요소 시퀀스 및 특성을 가진 요소에 대해 유추된 스키마를 나타냅니다.
![]() |
---|
요소에 자식 요소가 한 개만 있더라도 여전히 시퀀스로 간주됩니다. |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root attribute1="text"> <subElement1/> <subElement2/> </root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:element name="subElement1" /> <xs:element name="subElement2" /> </xs:sequence> <xs:attribute name="attribute1" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> |
자식 요소 시퀀스 및 선택 항목을 가진 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 자식 요소 시퀀스 및 선택 항목을 가진 요소에 대해 유추된 스키마를 나타냅니다.
![]() |
---|
xs:choice 요소의 maxOccurs 특성은 유추된 스키마에서 "unbounded"로 설정됩니다. |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root> <subElement1/> <subElement2/> <subElement1/> </root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:choice maxOccurs="unbounded"> <xs:element name="subElement1" /> <xs:element name="subElement2" /> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
자식 요소 시퀀스 및 선택 항목과 특성을 가진 요소
다음 표에서는 InferSchema 메서드에 대한 XML 입력 및 생성된 XML 스키마를 보여 줍니다. 굵게 표시된 요소는 자식 요소 시퀀스 및 선택 항목과 특성을 가진 요소에 대해 유추된 스키마를 나타냅니다.
![]() |
---|
xs:choice 요소의 maxOccurs 특성은 유추된 스키마에서 "unbounded"로 설정됩니다. |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.
XML |
스키마 |
---|---|
<?xml version="1.0"?> <root attribute1="text"> <subElement1/> <subElement2/> <subElement1/> </root> |
<?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml ns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:sequence> <xs:choice maxOccurs="unbounded"> <xs:element name="subElement1" /> <xs:element name="subElement2" /> </xs:choice> </xs:sequence> <xs:attribute name="attribute1" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> |
특성 처리
노드에서 새로운 특성이 나타날 때마다 해당 특성은 use="required"와 함께 노드의 유추된 정의에 추가됩니다. 인스턴스에서 같은 노드가 다시 나타나면 유추 과정에서 현재 인스턴스의 특성을 이미 유추된 특성과 비교합니다. 인스턴스에 이미 유추된 특성의 일부가 누락되어 있으면 use="optional"이 특성 정의에 추가됩니다. 새로운 특성은 use="optional"과 함께 기존 선언에 추가됩니다.
발생 제약 조건
스키마 유추 과정에서는 스키마의 유추된 구성 요소에 대해 "0" 또는 "1" 및 "1" 또는 "unbounded"의 값을 갖는 minOccurs 및 maxOccurs 특성이 생성됩니다. "1" 및 "unbounded" 값은 "0" 및 "1" 값이 XML 문서의 유효성을 검사할 수 없을 경우에만 사용됩니다. 예를 들어, MinOccurs="0"이 요소를 정확하게 나타내지 못하면 minOccurs="1"이 사용됩니다.
혼합 내용
요소에 텍스트와 요소가 섞여 있는 것과 같이 혼합 내용이 있으면 유추된 복합 형식 정의에 대해 mixed="true" 특성이 생성됩니다.
기타 노드 형식 유추 규칙
다음 표에서는 처리 명령, 주석, entityreference, CDATA, 문서 형식 및 네임스페이스 노드의 유추 규칙에 대해 설명합니다.
노드 형식 |
변환 |
---|---|
처리 명령 |
무시됨 |
주석 |
무시됨 |
EntityReference |
XmlSchemaInference 클래스는 엔터티 참조를 처리하지 않습니다. XML 문서에 엔터티 참조가 있는 경우 엔터티를 확장하는 판독기를 사용해야 합니다. 예를 들어, 매개 변수로서 ExpandEntities로 설정된 EntityHandling 속성과 함께 XmlTextReader를 전달할 수 있습니다. 엔터티 참조가 발생할 때 판독기가 엔터티를 확장하지 않으면 예외가 throw됩니다. |
CDATA |
XML 문서의 모든 <![CDATA[ … ]] 섹션은 xs:string으로 유추됩니다. |
문서 형식 |
무시됨 |
네임스페이스 |
무시됨 |
스키마 유추 과정에 대한 자세한 내용은 XML 문서에서 스키마 유추를 참조하십시오.