다음을 통해 공유


스키마 노드 형식 및 구조 유추 규칙

이 항목에서는 스키마 유추 과정에서 XML 문서의 노드 형식을 XSD(XML 스키마 정의 언어) 구조로 변환하는 방법을 설명합니다.

요소 유추 규칙

이 단원에서는 요소 선언의 유추 규칙에 대해 설명합니다. 유추되는 8개의 요소 선언 구조는 다음과 같습니다.

  1. 단순 형식 요소

  2. 빈 요소

  3. 특성을 가진 빈 요소

  4. 특성 및 단순 내용을 가진 요소

  5. 자식 요소 시퀀스를 가진 요소

  6. 자식 요소 시퀀스와 특성을 가진 요소

  7. 자식 요소 선택 시퀀스를 가진 요소

  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 문서에서 스키마 유추를 참조하십시오.

참고 항목

참조

XmlSchemaInference

개념

XML 스키마 유추

XML 문서에서 스키마 유추

단순 형식 유추 규칙

기타 리소스

XML SOM(스키마 개체 모델)