XML 파일 샘플 세부사항 편집 및 유효성 검증

이 샘플은 XML 편집기에서 안내되는 일부 편집 기능을 사용하여 XML 파일을 편집하고 유효성 검증하는 방법을 나타냅니다. DTD 또는 XML 스키마 제한조건이 있는 XML 파일의 편집에 대한 자세한 정보는 XML 편집기 온라인 도움말을 참조하십시오.
예제 설명
anyElement

XML 스키마 스펙의 요소를 사용하여 XML 문서의 컨텐츠 모델을 확장하는 방법에 대해 설명하는 고급 예제입니다.

PurchaseOrder.xml 편집

XML 파일(PurchaseOrder.xml)을 편집할 때 XML 스키마 파일(PurchaseOrder.xsd)을 사용하여 편집 지원을 제공하는 방법을 보여줍니다.

international 디렉토리는 파생된 유형을 빌드하는 방법 및 XML 인스턴스 문서에서 xsi:type 속성을 사용하는 방법을 설명합니다.

report.xsd 예제는 여러 네임스페이스의 다중 스키마에 대해 작업하는 방법을 보여줍니다.

대체 그룹 사용 XML 스키마를 사용하여 이름 지정된 요소 그룹이 다른 요소로 대체되도록 허용하는 방법을 보여줍니다.

anyElement

이 샘플은 XML 스키마의 요소를 사용하여 확장 가능한 컨텐츠 모델을 작성하는 방법을 보여줍니다. 샘플은 2개의 디렉토리로 나뉘어집니다.
  1. anyNamespace - ##any 네임스페이스를 사용하는 방법을 보여줍니다.
  2. specifiedNamespace - 특정 네임스페이스를 사용하는 방법을 보여줍니다.

##any 네임스페이스 사용

anyNamespace 디렉토리의 Book.xsd 스키마에는 복합 유형 BookType이 있습니다. BookType의 컨텐츠는 제목, 저자, ISBN 및 선택적으로 any 요소가 표시하는 대로 잘 구성된 XML입니다. <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>

즉, 인스턴스 문서에서 BookType 정의를 확장하여 임의의 XML 요소를 삽입할 수 있습니다. 이 샘플에는 Publisher.xsd와 Reviewer.xsd의 두 스키마가 있습니다. 이를 사용하여 인스턴스 문서에서 BookType의 정의를 확장합니다. 이 두 스키마는 다른 네임스페이스에 있습니다.

BookRev.xml은 xsi:schemaLocation 속성을 통해 Book.xsd와 Reviewer.xsd 둘 다에 연관됩니다. 서적에 대한 검토 주석을 제공하는 reviewer 요소로 BookType을 확장하는 방법을 보여줍니다.
  • XML 편집기의 디자인 보기에서 opensource:reviewer 요소를 선택하십시오. 팝업 메뉴에서 하위 추가 > 주석을 선택하여 reviewer에 대한 주석을 추가하십시오.
  • 유효성 검증 실행 - reviewer 요소가 Reviewer.xsd 파일에 정의된 제한조건을 충족하므로 문서는 유효합니다.
BookPub.xml은 xsi:schemaLocation 속성을 통해 Book.xsd와 Publisher.xsd 둘 다에 연관됩니다. 서적에 대한 발행인 정보를 제공하는 company 요소로 BookType을 확장하는 방법을 보여줍니다.
  • XML 편집기의 디자인 보기에서 pub:company 요소를 선택하십시오. 팝업 메뉴에서 제거를 선택하여 제거하십시오.
  • 유효성 검증 실행 - any 요소가 선택적이므로 문서는 유효합니다.

특정 네임스페이스 사용

specifiedNamespace 디렉토리의 Book.xsd 스키마에는 복합 유형 BookType이 있습니다. BookType의 컨텐츠는 제목, 저자, ISBN 및 선택적으로 any 요소가 표시하는 대로 네임스페이스 http://www.wesley.com에 속하는 잘 구성된 XML입니다. <any namespace="http://www.wesley.com" minOccurs="0" maxOccurs="unbounded"/>

즉, 인스턴스 문서에서 네임스페이스 http://www.wesley.com에 속하도록 제공된 BookType 정의를 확장하여 임의의 XML 요소를 삽입할 수 있습니다. 이 예제에서 Reviewer.xsd 파일은 이 네임스페이스에 속합니다.

Book.xml은 xsi:schemaLocation 속성을 통해 Book.xsd와 Reviewer.xsd 둘 다에 연관됩니다. 서적에 대한 검토 주석을 제공하는 reviewer 요소로 BookType을 확장하는 방법을 보여줍니다.

Book.xml에 대해 XML 편집기의 디자인 보기에서 rev:reviewer 요소를 선택하십시오. 팝업 메뉴에서 하위 추가 > 주석을 선택하여 reviewer에 대한 주석을 추가하십시오. 유효성 검증을 실행하여 문서가 유효한지 확인하십시오.

any 요소가 있는 스키마에서 인스턴스 생성

새 XML 마법사를 사용하여 XML 스키마의 인스턴스를 작성할 수 있습니다. 스키마에 지정된 네임스페이스 URI(예: specifiedNamespace 디렉토리에 있는 Book.xsd의 BookType)가 있는 경우, 마법사는 이러한 네임스페이스의 스키마 위치를 입력하도록 프롬프트합니다.
  • 네비게이터 보기에서 "specifiedNamespace" 디렉토리에 있는 Book.xsd 오브젝트를 선택하십시오. Book.xsd를 마우스 오른쪽 단추로 클릭하고 생성 > XML 파일을 선택하여 새 XML 마법사를 호출하십시오.
  • 마법사의 첫 번째 페이지에서 새 파일 이름을 Book1.xml로 지정하십시오. 다음을 클릭하십시오.
  • XML 스키마 정보 그룹 상자에는 두 개의 네임스페이스를 표시하는 테이블이 있습니다. 첫 번째는 Book.xsd에 해당하는 네임스페이스입니다. 두 번째는 Book.xsd 내의 any 요소에서 참조되는 네임스페이스입니다.
  • 완료를 클릭하십시오. 'http://www.wesley.com'의 위치를 지정하지 않았음을 경고하는 메시지가 표시됩니다.
  • 아니오를 클릭하십시오.
  • 테이블에서 'http://www.wesley.com' 네임스페이스를 선택하고 편집을 클릭하십시오.
  • 찾아보기를 클릭하고 anyElement/anyNamespace 디렉토리에서 Publisher.xsd 파일을 선택하십시오.
  • 'http://www.wesley.com'의 company 요소가 'http://www.ibm.com' 네임스페이스에 있는 book 요소의 하위로 생성되었습니다.

새 XML 마법사는 올바른 컨텐츠를 생성하는 데 필요한 스키마 위치를 입력하도록 프롬프트했습니다. 위의 단계를 반복하면서 'http://www.wesley.com' 네임스페이스의 스키마 위치를 입력하지 않으면 company 요소 대신 ANY-ELEMENT 플레이스홀더가 생성됩니다. 원하는 요소를 포함하도록 ANY-ELEMENT를 수정해야 합니다.

XML 문서에 네임스페이스 추가

XML 편집기는 XML 문서에 네임스페이스를 계속 추가하는 편리한 메커니즘을 제공합니다. 소스 보기에서 입력하여 네임스페이스를 수동으로 추가하는 경우에는 오류가 발생하기 쉽습니다. 스키마 네임스페이스 URI와 스키마 위치 속성 구문은 오타가 발생하기 쉽습니다. 이 타스크를 지원하기 위해 유용한 대화 상자가 제공됩니다. 아웃라인 또는 디자인 보기에서 네임스페이스 편집 대화 상자에 액세스하여 이 타스크를 지원할 수 있습니다.
  • anyElement/anyNamespace 디렉토리에 있는 BookPub.xml 파일을 여십시오.
  • root 요소를 마우스 오른쪽 단추로 클릭하고 네임스페이스 편집 메뉴 항목을 선택하십시오.
  • 추가를 클릭하여 새 네임스페이스에 대한 정보를 입력할 대화 상자를 호출하십시오.
  • 새 네임스페이스 지정을 선택하십시오. 찾아보기를 클릭하고 anyNamespace 디렉토리에 있는 Reviewer.xsd 파일을 찾으십시오.
  • 접두부 및 네임스페이스 이름 필드를 채우십시오.
  • 확인을 클릭하고 확인을 다시 한 번 클릭하십시오. xmlns:openSource 속성이 추가되었으며 xsi:schemalocation 속성 값이 갱신되었습니다.
  • 이제 네임스페이스가 추가되었으므로 pub:company 요소를 마우스 오른쪽 단추로 클릭하고 앞에 추가 또는 뒤에 추가 팝업을 선택하면 Reviewer.xsd 네임스페이스(즉, http://www.apache.com)의 요소를 추가할 수 있습니다.

PurchaseOrder.xml 편집

PurchaseOrder.xsd 파일은 PurchaseOrder.xml 파일의 컨텐츠를 정의하는 규칙을 제공합니다. 이 파일은 xsi:schemaLocation 속성을 통해 PurchaseOrder.xml 파일에 연관됩니다.

발생 제한조건

PurchaseOrder.xsd에서 item 요소(복합 유형 항목 아래에 있음)에는 값이 minOccurs=0인 선택적 shipDate 요소가 있습니다.
		<element name="shipDate" type="date" minOccurs="0"/>

PurchaseOrder.xml에 대해 XML 편집기의 디자인 보기에서 items 요소 아래의 첫 번째 항목을 선택하십시오. 마우스 오른쪽 단추로 클릭하고 하위 추가 > shipDate를 선택하여 item 요소에 shipDate를 추가하십시오. 값이 현재 날짜로 설정된 shipDate 요소가 추가됩니다. 하나 이상의 shipDate 요소가 있어야 한다는 제한조건이 충족되었으므로 하위 추가 팝업 메뉴에는 더 이상 shipDate 옵션이 없습니다.

shipDate 요소를 선택하고 팝업에서 제거를 선택하여 제거하면 하위 추가 > shipDate 옵션을 다시 사용할 수 있습니다.

열거된 요소 유형

PurchaseOrder.xsd에서 USAddress 복합 유형에는 유형이 단순 유형 USState인 state 요소가 있습니다.
		<element name="state" type="po:USState"/>
USState 단순 유형은 다음과 같은 열거 패싯이 있는 문자열에서 파생됩니다.
		<simpleType name="USState"> 
			<restriction base="string">
				<enumeration value="CA"></enumeration>
 				<enumeration value="PA"></enumeration>
				<enumeration value="AR"></enumeration>
			</restriction>
		</simpleType>

PurchaseOrder.xml에 대해 XML 편집기의 디자인 보기에서 shipTo 요소 아래의 state 텍스트 필드를 선택하십시오. 목록이 표시되고 이 목록에서 USState 단순 유형의 열거 값에 따라 제한되는 세 개의 값(CA, PA 및 AR)을 선택할 수 있습니다.

인스턴스 문서에서 파생된 유형 사용(xsi:type 속성)

ipo.xml 파일은 물품을 영국으로 발송하고 미국 주소로 청구서를 보내는 방법을 보여줍니다. ipo.xsd에서 billTo 및 shipTo 요소는 Address 유형으로 정의되었습니다.
		<element name="shipTo" type="ipo:Address"/>
		<element name="billTo" type="ipo:Address"/>

address.xsd에서는 두 개의 복합 유형 USAddress와 UKAddress가 기본 유형 Address를 확장합니다.

인스턴스 문서 ipo.xml은 xsi:type 속성을 사용하여 Address의 다른 파생(예: USAddress)을 사용하도록 선택할 수 있습니다.

XML 편집기의 디자인 보기에서 shipTo 요소 아래에 있는 xsi:type 속성을 선택하십시오. 목록을 사용하여 사용할 Address 유형을 선택하는 방법을 확인하십시오. 안내되는 지원은 콤보 상자에서 선택하는 유형을 기반으로 합니다.

다중 스키마 및 네임스페이스에 대한 작업

분기별 보고서 예제는 여러 네임스페이스의 다중 스키마에 대해 작업하는 방법을 보여줍니다. 여기에는 PurchaseOrder/international 폴더 아래에 address.xsd, ipo.xsd, report.xsd 및 report.xml 파일이 있습니다.

스키마가 커지면 쉬운 유지보수, 재사용 및 가독성을 위해 컨텐츠를 여러 스키마 문서에 나누는 것이 좋습니다. XML 스키마는 이를 지원하는 두 가지 구성(include 및 import)을 정의합니다. include 요소는 포함된 스키마에서 정의 및 선언을 현재 스키마로 불러옵니다. 그러려면 포함된 스키마가 포함하는 스키마와 동일한 대상 네임스페이스에 있어야 합니다. import 요소도 유사하게 동작하지만 가져오는 스키마는 다른 네임스페이스에 있을 수 있습니다.

include 및 import에 대한 자세한 정보는 XML 스키마 편집기 온라인 도움말을 참조하십시오.

대체 그룹 사용

Catalogue.xsd 파일은 대체 그룹에서 Publication이 될 Book 및 Magazine을 선언합니다.
		<element name="Book" type="Catalogue:BookType"
				substitutionGroup="Catalogue:Publication"/>
		<element name="Magazine" type="Catalogue:MagazineType"
				substitutionGroup="Catalogue:Publication"/>

Catalogue의 컨텐츠는 대체 그룹에 있는 모든 요소가 될 수 있습니다. XML 편집기의 디자인 보기에서 Catalogue 요소에 대해 하위 추가 메뉴를 선택하십시오. Book과 Magazine 둘 다가 Publication 요소의 컨텐츠로 어떻게 대체될 수 있는지 확인하십시오. 또한 인스턴스 문서에서 Publication 요소를 직접 사용할 수 없도록 Publication 요소를 abstract로 선언하였습니다.


피드백