xsd 언어. XSD 파일이란 무엇입니까 - 형식을 사용하고 변환하는 방법

/ 브라우저

이 장에서는 XML 스키마를 작성하는 방법을 보여줍니다. 또한 스키마를 다양한 방식으로 작성할 수 있음을 배우게 됩니다.

XML 문서

"shiporder.xml"이라는 XML 문서를 살펴보겠습니다.

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
존 스미스

올라 노드만

랑그트 23

4000 스타방에르
노르웨이


엠파이어 벌레스크
스페셜 에디션
1
10.90


당신의 마음을 숨기십시오
1
9.90

위의 XML 문서는 "orderid"라는 필수 속성을 포함하는 "shiporder" 루트 요소로 구성됩니다. "shiporder" 요소는 "orderperson" , "shipto" 및 "item" 의 세 가지 하위 요소를 포함합니다. "item" 요소는 두 번 나타나며 "title" , 선택적 "note" 요소, "quantity" 및 "price" 요소를 포함합니다.

위의 줄: Xmlns:XSI="http://www.w3.org/2001/XMLSchema-instance"는 이 문서가 스키마 유효성을 검사해야 함을 XML 구문 분석기에 알려줍니다. 라인: xsi: noNamespaceSchemaLocation="shiporder.xsd"는 스키마가 어디에 있고 (여기서는 "shiporder.xml"과 같은 폴더에 있음) .

XML 스키마 생성

이제 위의 XML 문서에 대한 스키마를 생성하려고 합니다.

"shiporder.xsd"라는 새 파일을 여는 것으로 시작하겠습니다. 스키마를 생성하기 위해 우리는 단순히 XML 문서의 구조를 따르고 우리가 찾은 각 요소를 정의할 수 있습니다. 스키마를 정의하는 스키마 요소인 xs가 뒤따르는 표준 XML 선언부터 시작하겠습니다.



...

위의 스키마에서 표준 네임스페이스(xs)를 사용하고 해당 네임스페이스와 연결된 URI는 표준 값 http://www.w3.org/2001/XMLSchema를 갖는 스키마 언어 정의입니다.

다음으로 "shiporder" 요소를 정의해야 합니다. 이 요소에는 속성이 있고 다른 요소가 포함되어 있으므로 복합 유형으로 취급합니다. "shiporder" 요소의 하위 요소는 하위 요소의 정렬된 시퀀스를 정의하는 시퀀스 요소인 xs로 둘러싸여 있습니다.




...


그런 다음 "orderperson" 요소를 간단한 유형으로 정의해야 합니다(속성이나 다른 요소를 포함하지 않기 때문). (xs:string) 유형에는 스키마의 미리 정의된 데이터 유형을 지정하는 XML 스키마와 관련된 네임스페이스 접두사가 붙습니다.










스키마를 사용하면 MaxOccurs 및 MinOccurs 속성이 있는 요소의 가능한 발생 수를 결정할 수 있습니다. MaxOccurs는 요소의 최대 발생 횟수를 지정하고 MinOccurs는 요소의 최소 발생 횟수를 지정합니다. MaxOccurs와 MinOccurs의 기본값은 모두 1입니다!

이제 "item" 요소를 정의할 수 있습니다. 이 요소는 "shiporder" 요소 내에 여러 번 나타날 수 있습니다. 이는 "item" 요소의 maxOccurs 특성을 "unbounded" 로 설정하여 결정됩니다. 즉, 작성자가 원하는 만큼 "item" 요소가 나타날 수 있습니다. "note" 요소는 선택 사항입니다. minOccurs 속성을 0으로 설정하여 이를 결정했습니다.










이제 요소의 "shiporder" 특성을 선언할 수 있습니다. 이것은 필수 속성이므로 use="required"를 지정합니다.

참고: 속성 선언은 항상 마지막에 와야 합니다.

다음은 "shiporder.xsd"라는 스키마 파일의 전체 목록입니다.





























별도의 회로

이전 디자인 방법은 매우 단순하지만 문서가 복잡할 경우 읽기 및 유지 관리가 어려울 수 있습니다.

다음 디자인 방법은 모든 요소와 특성을 정의한 다음 ref 특성을 사용하여 참조하는 것을 기반으로 합니다.

스키마 파일("shiporder.xsd")의 새로운 디자인은 다음과 같습니다.








































명명된 유형 사용

세 번째 설계 방법은 요소 정의를 재사용할 수 있는 클래스 또는 유형을 정의합니다. 요소의 이름을 simpleTypes 및 complexTypes로 지정한 다음 요소의 type 특성을 통해 참조하면 됩니다.

다음은 스키마 파일("shiporder.xsd")의 세 번째 디자인입니다.

































제약 조건 요소는 데이터 형식이 W3C XML 스키마 데이터 형식 네임스페이스에서 파생되었음을 나타냅니다. 따라서 다음 스니펫은 요소 또는 속성의 값이 문자열 값이어야 함을 의미합니다.

제약 조건 요소는 요소에 제약 조건을 적용하는 데 더 일반적으로 사용됩니다. 위의 다이어그램에서 다음 라인을 살펴보십시오.





이는 요소 또는 속성의 값이 문자열이어야 하고 문자열당 정확히 6자여야 하며 해당 문자가 0에서 9 사이의 숫자여야 함을 나타냅니다.

작업 할 때 매우 일반적인 작업에 대해 한 곳에서 말하고 싶습니다. XML, 즉 창조 XML기존에 기반. 이 작업은 다음과 같은 추가 작업이 해결되는 여러 단계로 구성됩니다.

  • 창조 XML기반을 둔 XSD, 그 반대.
  • 개체의 직렬화 및 역직렬화.
  • 향후 직렬화를 위한 클래스 만들기 XML또는 XSD.
시작하기 전에 독자가 단어에 익숙해지도록 계획합니다. XML그리고 XSD. 에 관하여 XML, 나는 이것에 문제가 없다고 생각하지만 XSD나는 그것이 무엇인지 궁금 할 것입니다. 간단히 말해서 다음과 같습니다.
XSD설명하는 언어이다 XML. 그리고 이 설명이 포함된 파일의 내용을 보면 질문이 생깁니다. XML? 그러나 일부 외부 시스템과 통합하고 있고 데이터 교환을 위해 해당 형식을 사용하려고 한다고 상상해 보십시오. XML. 그래서 여기 있습니다 XSD각 요소에 대한 이름, 가능한 속성, 필수 필드 또는 속성을 설명하고 태그의 내용이 하나의 내부 요소( ) 그리고 더 이상, 또는 노드는 일련의 요소(< 가> ... ). 외부 시스템이 귀하의 것이라면 문제가 없을 수 있지만 타사인 경우에는 주어진 설명~을 통해 XSD, 형식의 분쟁 해결 도구가 될 것이며 유틸리티를 사용하여 모든 준수 여부를 확인할 수 있습니다. XML원래 형식.
그럼 스탬프 찍는 법을 배우기 위해 우리는 무엇을 할 것입니까? XML귀하의 벤치 마크를 기반으로? 모든 것을 순서대로 설명하겠습니다.

사용 가능:
어떤 종류 XML(xmlfile.xml), 텍스트 형식으로 파일에 저장됩니다. 아래는 텍스트입니다.

< catalog > < book id = " bk101 " > < author >감바델라, 매튜 < title >XML 개발자 가이드 < genre >컴퓨터 < price > 44.95 < publish_date > 2000-10-01 < description >XML을 사용하여 애플리케이션을 만드는 방법에 대해 자세히 살펴봅니다. < book id = " bk102 " > < author >랄스, 김 < title >자정의 비 < genre >공상 < price > 5.95 < publish_date > 2000-12-16 < description >전직 건축가가 세상의 여왕이 되기 위해 기업 좀비, 사악한 마법사, 그리고 자신의 어린 시절과 싸웁니다.

새 항목을 만드는 단계:

  1. 먼저 유틸리티 사용 XSD.exe, 또는 사용하여 온라인 서비스(www.freeformatter.com/xsd-generator.html 중 하나인 "xml to xsd" 검색), 사용 가능한 파일에서 생성합니다. XML그녀의 원시 XSD설명. 출력에서 완전히 자동으로 생성됩니다. 출력.xsd 이미 사용 가능하지만 완전하지 않을 수 있는 파일.
  2. 다음을 기반으로 출력.xsd , C# 클래스가 생성됩니다. xmlclass.cs그런 다음 프로젝트에 추가합니다. 다음을 사용하여 클래스를 만들 수 있습니다. xsd.exe,또는 xsd2코드유틸리티 또는 모든 온라인 서비스.
  3. 이제 파일 클래스를 사용할 준비가 되었습니다. xmlclass.cs. 따라서 인스턴스를 생성하고 데이터로 채웁니다. XML 클래스그런 다음 직렬화 프로세스를 사용하여 개체를 다음으로 변환합니다. XML문자열을 입력한 다음 저장합니다. 새로운 파일. 따라서 우리는 얻는다 XML사용 가능한 것을 기반으로 합니다.
시작하자!

1단계: XML에서 XSD를 만듭니다.

그래서 제가 직접 사용하는 방법은 다음과 같습니다.
  1. 공익사업 xsd.exe- 창작자 마이크로소프트.
  2. 공익사업 xsd2code.exe - 타사 응용 프로그램, 다음과 동일하게 모든 작업을 수행할 수 있습니다. xsd.exe, 하지만 직접 다운로드할 수 있습니다( 이 순간에서 지불 가능하게 되었습니다. 재판기간).
  3. 모든 온라인 서비스 사용.
받으려면 다음을 수행해야 합니다. XSD.exe, 당신은 무엇이든 넣어야합니다 마이크로소프트 SDK, 배달시 이 신청서. 불행하게도 현재 키트의 스튜디오에는 이 유틸리티가 포함되어 있지 않습니다.

다음 중 하나를 다운로드하여 설치하는 링크 SDK:
Windows 7 및 .NET Framework 4용 Windows SDK.

검색을 사용하여 파일을 찾자 xsd.exe그런 다음 (작업을 단순화하기 위해) 디스크 루트에 생성된 폴더에 복사합니다. C:\xmltoxsd. 다음으로 같은 폴더에 xml파일.xml모든 것이 시작할 준비가 되었습니다.


찢어 버리다 " 명령줄" (시작 -> "실행" -> "cmd"), 디렉토리로 이동하여 기본 매개변수로 호출 xsd.exe, xmlfile.xml을 매개변수로 전달:


근처에 파일이 나타났습니다. xmlfile.xsd콘텐츠와 함께.


그게 다야! 이러한 작업은 프리미티브를 생성하기에 충분합니다. XSD작업할 파일입니다. 그러나 이해할만한 가치가 있습니다. xsd.exe는 다른 유틸리티와 마찬가지로 필드 유형에 대해 아무것도 모릅니다(따라서 필드 유형은 거의 항상 ), 속성 및 매개변수의 모든 변형에 대해 설명합니다. 즉, 일부 태그에 속성이 없는 경우 XML, 그러면 설명에 표시되지 않습니다. 그러므로 XML가능한 한 완전해야 하며 요소가 여러 하위 필드를 포함할 수 있는 경우 두 개 이상을 추가하는 것이 좋습니다. xsd.exe이것이 컬렉션이라는 것을 깨달았습니다.

통사론 XSD그다지 복잡하지 않으므로 충분히 진지한 설명을 작성하면 파일로 작업해야 할 수도 있습니다.

2단계. XSD에서 클래스 생성.

C#에서 클래스를 만들려면 재사용해야 합니다. xsd.exe하지만 다른 매개변수로 /클래스, 우리의 길을 전달 xmlfile.xsd.


실행 후 xmlfile.cs 파일이 표시되며 그 내용은 아래에 압축된 형식으로 제공됩니다.


보시다시피 내부 요소의 경우 목록클래스가 생성되었습니다 카탈로그도서, 해당 필드는 의 필드에 해당합니다. XML, 그리고 필드 ID속성으로 표시됩니다. xsd.exe내부에 무엇이 있는지 올바르게 이해했습니다. 목록책 모음이 저장되어 있으므로 속성이 나타납니다. 항목, 하위 컬렉션을 채웁니다.
논평: xsd.exe결과 클래스 및 필드에 주석을 추가하는 방법을 모릅니다. 설명에서 XSD라는 요소가 있습니다< xs:annotation > , 가장 자주 포함하는< xs:documentation >, 그 안에 필드에 대한 설명이 배치됩니다. 이론적으로는 /// 설명에 넣어야 하지만 현재로서는 xsd.exe설명에 텍스트 추가를 거부하므로 다음과 같은 대안에 의존해야 합니다. xsd2코드나 온라인 서비스 .

3단계. XML에서 객체의 직렬화.

결과 클래스는 파일에 있습니다. xmlfile.cs. 다음으로 내용 또는 파일 자체가 프로젝트에 추가됩니다. 비주얼 스튜디오, 그 후에 작업할 수 있습니다. 데모용 책 개체를 만든 다음 형식으로 파일에 저장하겠습니다. XML.

비공개 무효 예()( // 첫 번째 책 만들기 var book1 = new catalogBook () ( author = "왕" , description = "매우 흥미로운 책" , 장르 = "판타지" , price = 22.ToString(), id = "42011" , 제목 = "It" }; !} // 두 번째 책 만들기 var book2 = new catalogBook () ( author = "O"Brien, Tim" , 설명 = "Microsoft"의 .NET 이니셔티브는 이 딥 프로그래머의 참조에서 자세히 살펴봅니다.", 장르 = "컴퓨터" , 가격 = 36.ToString(), id = "30012" , 제목 = "Microsoft .NET: 프로그래밍 바이블" }; // 위의 두 책을 포함하는 디렉토리의 루트 요소를 생성합니다. var catalog = new catalog () ( Items = new ( book1, book2 ) ); // XML 객체 카탈로그 포함 var xmlCatalog = 직렬화(카탈로그); // 파일에 문자열 쓰기 // TODO 데모용으로 제작되었습니다. 바람직하게는 직렬화 메서드를 호출하여 스트림을 파일에 전달합니다.파일 .WriteAllText("Output.xml" , xmlCatalog); ) 개인 문자열 직렬화 (TType sourceObject) ( if (sourceObject == null ) ( 반환 문자열 .Empty; ) // XmlSerializer를 사용하여 XML 문자열로 변환 var xmlserializer = new XmlSerializer(typeof(TType)); var stringWriter = new StringWriter(); using (var writer = XmlWriter .Create(stringWriter, new XmlWriterSettings () ( Indent = true ))) ( xmlserializer.Serialize(writer, sourceObject); return stringWriter.ToString(); ) ) 실행 및 열기 후 output.xml원하는 방식으로 저장한 것을 볼 수 있습니다(하단 파일 - " 코드로 생성").

다양한 형태의 보고를 수행할 때(심지어 정상적인 작업온라인), 일부 사용자는 XSD 확장자를 가진 파일을 발견할 수 있습니다. 이 파일은 일반적으로 XML 데이터 설명 스키마이지만 언급된 파일이 Pattern Maker 프로그램의 파생 제품인 경우가 있습니다. 이 기사에서는 XSD 파일을 여는 방법, 이에 도움이 되는 프로그램, "파일이 xsd 구성표와 일치하지 않습니다."라는 오류의 본질에 대해 설명합니다.

XSD란?

"XSD"라는 용어는 영어 단어의 약어입니다. "XML 스키마 정의". 이 확장자를 가진 파일은 자체 언어를 사용하여 XML 문서의 구조를 설명하는 XML 데이터 설명 스키마입니다.

xsd 파일은 XML 문서에 있는 요소를 설명합니다. 이들은 일반적으로 고정 데이터, 기본값, 데이터 구문, 지정된 문서가 준수해야 하는 규칙 등이며 일부 요소는 종종 다른 요소와 관련되고 참조합니다.

컨소시엄에서 승인한 XSD 1.1 월드 와이드 웹 2012년 4월에 DTD(Document Type Definition) 또는 SOX(Simple Object XML)와 같은 기존 XML 스키마에 비해 몇 가지 중요한 이점이 있습니다. 예를 들어, XSD가 XML로 작성되었다는 것입니다. 자동 생성다이어그램 등.


xsd 형식을 여는 방법

대부분의 xsd 파일을 열려면 사용 가능한 텍스트 편집기(동일한 메모장, 메모장 ++, PSPad 편집기 등)를 사용하면 충분합니다. 또한 Microsoft XML Notepad, Oxygen XML Editor, Liquid XML Studio 및 기타 아날로그와 같은 프로그램은 xsd 형식을 여는 데 유용할 수 있습니다.

만약에 주어진 파일 Pattern Maker for Cross Stitch 프로그램(일반적으로 자수 패턴)의 결과이며, 이러한 파일은 지정된 프로그램을 사용하거나 "Pattern Maker Viewer"라는 특수 뷰어를 사용하여 볼 수 있습니다.


.XSD 형식 자수

파일이 xsd 스키마와 일치하지 않습니다. 파일이 무엇입니까?

그러나 XSD 파일에 포함된 XML 파일의 설명이 XML 파일의 실제 데이터와 일치하지 않는 경우가 있습니다. 오류는 데이터 자체와이 데이터를 입력하는 방법 모두에있을 수 있으며 시스템은 표준 방식으로 반응하여 "파일이 xsd 체계와 일치하지 않습니다."라는 메시지를 표시합니다.


종종 이러한 상황은 규제 기관의 전문가가 xml 파일을 열려고 할 때 언급된 오류를 감지할 때 회계 및 기타 보고 형식을 제출하는 경우에 발생합니다.

  1. xml 파일에서 데이터의 정확성을 확인하십시오., 구문 오류(추가 하이픈, 공백 등)의 존재에 중점을 둡니다.
  2. xml 파일로 작업한 프로그램 업데이트(아마도 현재 버전이 구식일 것입니다.)
  3. 연락하다 기술적 지원 , 이 소프트웨어 제품의 유지 관리(또는 규제 기관의 기술 지원)에 종사하는 사람.

결론

XSD 파일을 여는 방법? 질문에 대한 답은 편리한 텍스트 편집기(동일한 메모장)를 사용하는 것입니다. 원하는 xsd 파일이 Pattern Maker 프로그램의 제품인 경우 이 프로그램으로 파일을 열거나 보완 도구를 사용하여 Pattern Maker Viewer를 보는 것이 좋습니다.

확장자가 XSD인 파일은 대부분 XML 스키마 파일입니다. 텍스트 형식 XML 파일에 대한 유효성 검사 규칙을 정의하고 XML의 모양을 설명하는 파일입니다.

XSD 파일은 스키마 파일이기 때문에 다른 것에 대한 모델을 제공합니다. 이 경우그들은 XML 파일입니다. 예를 들어 XSD 파일에는 다음이 필요할 수 있습니다. XML 파일특정 경계, 관계, 순서, 속성, 중첩 특성 및 기타 요소가 있고 제한을 설정합니다.

XML 파일은 schemaLocation 속성이 있는 XSD 파일을 참조할 수 있습니다.

HobbyWare의 Pattern Maker 십자수 프로그램도 형식에 XSD 확장을 사용합니다.

XSD 파일을 여는 방법

XSD 파일은 Microsoft Visual Studio, XML 메모장, EditiX XML 및 XMLSpy로도 열 수 있습니다. Oxygen XML Editor는 Linux, Mac 및 Windows에서 작동하는 몇 안 되는 XSD 도구 중 하나입니다.

당신은 또한 사용할 수 있습니다 텍스트 에디터파일이 텍스트 파일이라는 점을 감안할 때 XSD 뷰어 및 편집기로 사용할 수 있습니다.

다음은 텍스트 편집기에서 열었을 때 XSD 파일이 어떻게 보이는지에 대한 예입니다.








Pattern Maker와 함께 사용되는 XSD 파일을 다루는 경우 당연히 이 파일을 열 수 있습니다. 소프트웨어. 그러나 무료 검색및 패턴 파일 인쇄 HobbyWare는 Pattern Maker Viewer를 제공합니다. XSD 파일을 프로그램으로 끌어다 놓거나 메뉴를 사용하십시오. "파일""열려 있는...". 이 뷰어는 유사한 PAT 형식도 지원합니다.

iOS 및 Android용 Crossty 앱은 십자수용 XSD 파일도 열 수 있지만 무료는 아닙니다.

XSD 파일을 변환하는 방법

XSD 파일을 다른 형식으로 변환하는 가장 쉬운 방법– 위에서 설명한 XSD 편집기 중 하나를 사용합니다.

필요할 수 있는 또 다른 변환은 XSD를 PDF로 Adobe Acrobat Reader 또는 기타 . XSD 파일을 여는 모든 컴퓨터에서 코드를 볼 수 있도록 하는 것 외에 XSD 파일을 PDF로 변환할 특별한 이유는 없을 것입니다.

XML 스키마 정의 도구는 XDR, XML 및 XSD 파일을 # 클래스 C와 같은 직렬화 가능한 클래스 또는 데이터 세트로 변환할 수 있습니다.

당신이 사용할 수있는 마이크로 소프트 엑셀 XSD 파일에서 데이터를 가져와서 Excel 스프레드시트에 넣어야 하는 경우.

위에서 언급한 Pattern Maker 프로그램(아닙니다. 무료 프로그램보기)를 사용하여 십자수 XSD 파일을 새 파일 형식으로 변환할 수 있습니다.

여전히 파일을 열 수 없습니까?

위에 나열된 프로그램 및 도구로 XSD 파일을 열 수 없는 경우 큰 기회 XSD 파일을 다루는 것이 아니라 비슷한 확장자를 가진 파일을 다루는 것입니다.

예를 들어 XDS 확장자는 XSD와 매우 유사해 보이지만 대신 DS Game Maker 프로젝트 파일 및 LcdStudio Design 파일에 사용됩니다. 이러한 파일 형식은 XML 파일이나 템플릿과 연결되어 있지 않습니다.

동일한 개념이 .XSB 파일 확장자를 사용하는 XACT Sound Bank 파일과 같은 다른 많은 파일 형식에 적용됩니다. 그것 사운드 파일 XSD 오프너 또는 파일 변환기로 열리지 않습니다.

파일이 .XSD로 끝나지 않는 경우 확장자를 검사하여 특정 파일 유형을 열거나 변환할 수 있는 프로그램을 찾으십시오.

XML에 대한 이전 기사에서 우리는 XML 문서를 XML DTD로 검증하는 더 이상 사용되지 않는 방법을 살펴보았습니다. 이 방법여전히 XML 데이터의 유효성을 검사하는 데 사용되지만 매일 점점 더 많이 대체되고 있습니다. 새로운 기술 XML 스키마라고 합니다. XML DTD에 있던 많은 결함이 XML 스키마에서 수정되었으므로 현재 모든 고급 개발자는 XML 스키마만 사용하여 문서를 검증합니다.

DTD에 비해 XML 스키마(XML 스키마)의 이점을 이해하기 위해 XML 스키마에서 성공적으로 수정된 DTD의 주요 단점을 자세히 살펴보겠습니다. ""기사에서 이미 언급했지만 이해를 돕기 위해 반복하겠습니다.

XML 스키마에 비해 XML DTD의 단점

  1. 비 XML 언어 구문. 즉, DTD는 XML이 아닙니다. 이와 관련하여 XML 문서의 인코딩 및 검증과 관련하여 다양한 문제가 발생할 수 있습니다.
  2. 데이터 유형 검사가 없습니다. XML DTD에는 문자열이라는 데이터 유형이 하나만 있습니다. 이와 관련하여 예를 들어 숫자 필드에 텍스트가 있는 경우 XML DTD가 데이터 유형을 확인할 수 없기 때문에 문서는 여전히 확인을 통과합니다.
  3. 둘 이상의 설명 DTD를 단일 XML 문서에 매핑할 수 없습니다. 즉, 하나의 DTD 설명만으로 문서를 검증할 수 있습니다. 여러 개가 있으면 설명을 다시 실행하고 모든 것을 하나의 파일에 결합해야하므로 매우 불편합니다.

이것이 XML 문서를 기술하는 산업 표준인 XML 스키마에서 성공적으로 수정된 XML DTD의 주요 단점이었습니다.

XML 스키마는 XML 문서를 설명하기 위한 업계 표준입니다.

즉, XML 스키마는 다음을 수행합니다.

  1. 요소 및 속성(사전)의 이름을 설명합니다.
  2. 요소와 특성 간의 관계와 해당 구조(콘텐츠 모델)를 설명합니다.
  3. 데이터 유형에 대해 설명합니다.

나는 또한 현재 계획의 도움으로 거의 모든 것을 설명 할 수 있다는 점에 주목하고 싶습니다. 즉, 스키마는 보편적인 방법 XML 문서를 검증할 뿐만 아니라 데이터베이스 등을 설명하는 데 사용할 수 있는 데이터의 문법에 대한 설명 따라서 현재 계획의 범위는 매우 넓습니다.

XML 문서의 유효성을 검사하기 위한 XML 스키마 예

실습에서 알 수 있듯이 예제를 통해 즉시 학습을 시작하면 자료가 훨씬 더 잘 흡수됩니다. 특히 텍스트 형식으로 연구하는 경우 자료가 매우 복잡하기 때문에 모든 미묘함을 탐구하지 않을 것이라고 즉시 말해야합니다.

간단한 XML 스키마 예

이 스키마를 사용하면 다음 콘텐츠가 포함된 XML 문서의 유효성을 검사할 수 있습니다.

<книга xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "book.xsd"> <название>XML 기초 <цена>300

이제 XML 스키마로 돌아갑니다. 이미 알아차리셨듯이, XML 생성스키마, 우리는 이미 알려진 XML을 사용합니다. 여기서 유일한 차이점은 일반 XML과 달리 요소가 이미 XML 스키마에 정의되어 있다는 것입니다. 이러한 이유로 네임스페이스가 사용됩니다. 이 경우 필요한 네임스페이스는 "http://www.w3.org/2001/XMLSchema"이며 "xs"라는 접두사가 붙습니다.

두 네임스페이스 접두사를 모두 사용할 수 있고 루트 요소에 대한 네임스페이스를 설정할 수 있다는 점을 바로 주목하고 싶습니다. 따라서 차이가 없습니다. 모두가 이 상황에서 어떻게 행동할지 결정합니다. 접두사 "xs" 또는 "xsd"가 일반적으로 사용된다고만 말할 것입니다.

자, 이제 위의 체계를 해독하는 방법을 알아 봅시다. 위에서 언급했듯이 XML 스키마는 어휘 및 데이터 유형에 대한 설명입니다. 이를 바탕으로 각 요소를 해독합니다.

  • - "Book" 유형으로 "book" 요소를 선언합니다.
  • - 우리는 "Book"이라는 이름으로 복합 유형을 선언합니다(xs: complexType - 중첩 요소를 포함할 수 있음).
  • - 중첩 선언. 즉, 유형에 중첩 요소가 포함됩니다.
  • - 이름이 "name"인 요소를 선언합니다(표준 유형 "string" - xs:string).
  • - 이름이 "price"인 요소를 선언합니다(표준 유형 "숫자" - xs: 10진수).

보시다시피 여기에는 매우 복잡한 것이 없습니다. 생각해 보면 모든 것이 매우 간단합니다.

XML 스키마의 주요 요소

간단히 말해서 XML 스키마는 다음과 같이 설명할 수 있습니다.

당신의 계획

예제에서 볼 수 있듯이 각 XML 스키마는 루트 요소 "스키마"와 필수 네임스페이스 "http://www.w3.org/2001/XMLSchema"로 구성됩니다. 다음은 회로 및 회로 자체에 대한 설명입니다. 동시에 매우 높은 품질의 스키마에서 매우 자주 설명이 XML 스키마 자체보다 훨씬 큽니다.

XML 스키마의 요소 설명

기사 시작 부분에서 이미 예를 고려했습니다. 가장 단순한 XML체계. 여기에서 요소와 유형을 별도로 설명했습니다. 동시에 시퀀스가 ​​여기서 역할을 하지 않는다는 점을 즉시 주목하고 싶습니다. 계획은 어느 쪽이든 작동합니다.

이제 XML 스키마를 작성하는 두 번째 방법을 살펴보겠습니다. 이 방법은 요소 내부의 유형 설명을 기반으로 합니다. 이 방법은 다른 요소에 대해 동일한 설명을 사용하지 않으려는 경우에 적합합니다. 명확성을 위해 예를 고려하십시오.

예제에서 볼 수 있듯이 요소는 적절한 접두사를 사용하는 특수 "요소" 구성을 사용하여 선언됩니다. 이 경우 요소 내부에 선언될 것이므로 유형(type)을 지정하지 않고 "root"라는 요소를 정의합니다. 즉, 요소를 설명하는 두 가지 방법이 있습니다.

편도

유형 설명

양방향

항목 유형 설명

첫 번째 방법과 두 번째 방법을 모두 사용할 수 있습니다. 그들은 모두 같은 방식으로 작동합니다. 유일한 질문은 이 특별한 경우의 편의성입니다.

다음으로 요소를 선언한 후 복합 유형임을 나타냅니다( ) 및 목록( ) 중첩 요소. 이 경우 "xs:string" 및 "xs:integer" 유형의 이름 및 연령 요소입니다. xs 접두사는 XML 스키마 표준에 이미 정의된 기본 유형임을 의미합니다.

보시다시피 지금까지 모든 것이 매우 간단합니다. 다시 말하지만, 이 기사는 XML 스키마에 대해 자세히 알아보기 위한 것이 아니라 자세히 알아보기 위한 것이므로 자세한 내용은 다루지 않겠습니다.

XML 스키마와 문서의 일치 방식

XML 스키마의 특징은 문서 자체가 아니라 네임스페이스를 기술한다는 것입니다. 이와 관련하여 대부분의 경우 문서에 언급되지 않습니다. 처리기 자체는 XML 문서의 지침을 사용하지 않고 필요한 스키마를 매핑합니다.

핸들러가 스키마의 위치를 ​​모르는 경우 스키마를 찾을 위치를 지정할 수 있습니다. 이것은 특수한 "schemaLocation" 속성을 사용하여 수행됩니다. 이 속성은 다른 네임스페이스에 속하므로 속성을 사용하려면 공백도 지정해야 합니다. 명확성을 위해 예를 고려하십시오.

XML 스키마

XML 문서

이제 각 줄을 자세히 살펴보겠습니다.

  • targetNamespace="http://www.site.com" - 이 XML 스키마의 네임스페이스를 지정합니다.
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - "schemaLocation" 특성이 설명된 네임스페이스를 포함합니다.
  • xsi:schemaLocation="http://www.site.com/product.xsd" - 파서가 스키마의 위치를 ​​모르는 경우 스키마를 찾을 수 있는 위치를 지정합니다. XML 문서가 네임스페이스에 속하지 않아 스키마에 이에 대한 참조가 없는 경우 "schemaLocation" 특성은 "noNamespaceSchemaLocation"(네임스페이스를 정의하지 않고 스키마를 가리킴)으로 대체됩니다.

그게 다야. XML 학습에 행운과 성공을 빕니다!

© 2023 ermake.ru - PC 수리 정보 - 정보 포털