XML과 XSD의 차이점은 무엇입니까?


답변:


145

실제로 XSD는 XML 자체입니다. 그 목적은 다른 XML 문서의 구조를 확인하는 것입니다. XSD는 모든 XML에 필수는 아니지만 XML이 특정 용도로 사용될 수 있음을 보장합니다. XML에는 적절한 형식과 구조의 데이터 만 포함됩니다.


제 3자가 나에게 다음과 같은 .XSD 문서를 보낸 경우 : <xs : element name = "QuoteRequestID"type = "xs : unsignedLong"minOccurs = "0"/> 포함-이것은 단지 필드에 대한 설명이 아닙니다. 그것은 원시 XML 될 실제 샘플 요청을 요청하는 합리적인 것입니다 <QuoteResultID> 등 등
제임스 윌슨

3
물론 그들에게 물어볼 수 있습니다. 이 작업을 수행 할 수있는 일부 온라인 도구 (예 : xsd2xml)를 사용할 수도 있습니다. xsd를 붙여 넣기 만하면이를 기반으로 샘플 xml 문서가 생성됩니다.
anthares

@anthares, 링크를 시도했지만 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema> 오류가 발생했습니다 : Error!!! The 'minOccurs' attribute cannot be present.
heretoinfinity

그게 왜 문제일까요?
heretoinfinity

111


예를 들어

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

이를 위해 xsd를 설계하십시오.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


XSD로 불가능한: 목록이 매우 작기 때문에 먼저 작성하고 싶습니다 .
1) 다른 노드 / 속성의 값을 사용하여 노드 / 속성을 검증 할 수 없습니다.
2) 제한 사항 : XSD 파일에 정의 된 요소는 하나의 데이터 유형으로 만 정의되어야합니다. [위의 예에서는 <child_two>다른 <parent>노드 에 나타나는 경우 int 이외의 데이터 유형을 정의 할 수 없습니다.
3) 요소 및 속성의 유효성 검사를 무시할 수 없습니다. 즉, 요소 ​​/ 속성이 XML에 표시되는 경우 해당 XSD에서 잘 정의되어야합니다. 사용은 <xsd:any>허용하지만 자체 규칙이 있습니다. 이를 준수하면 유효성 검사 오류가 발생합니다. 비슷한 접근 방식을 시도했지만 확실히 성공하지 못했습니다. 여기에 Q & A가 있습니다.


XSD로 가능한 것 :
1) XML 노드의 적절한 계층 구조를 테스트 할 수 있습니다. [xsd는 어떤 자식이 어떤 부모 아래에 와야하는지 정의합니다. 어떤 자식이 오류로 간주되는지를 준수합니다. 위의 예에서 child_two는 루트의 직계 자식이 될 수 없지만 차례로 "부모"태그의 자식입니다. "root"노드의 자식, 계층 구조가 있습니다.]
2) 노드 값의 Data type을 정의 할 수 있습니다. [위의 예에서 child_two는 숫자 이외의 데이터를 가질 수 없습니다]
3) 사용자 정의 data_type도 정의 할 수 있습니다. [예 : node <month>의 경우 가능한 데이터는 12 개월 중 하나 일 수 있습니다 .. 따라서 12 개월을 모두 정의해야합니다. 모든 12 개월 이름을 열거 형 값으로 쓰는 새 데이터 유형에서 ..
4) minOccurs 및 maxOccurs를 사용하여 요소 발생을 제한 할 수 있으며 기본값은 1과 1입니다.

.. 그리고 더 많은 ...


1
@ InfantPro'Aravind ' "다른 노드 / 속성의 값을 사용하여 노드 / 속성을 검증 할 수 없습니다."란 무엇을 의미 했습니까? 왜 그렇게하고 싶어할까요?
Geek


"다른 노드 / 속성의 값을 사용하여 노드 / 속성을 확인할 수 없습니다." 이것이 의미하는 바
GrowinMan 2014-08-04

@GrowinMan, 조건부 유효성 검사 (부모-자식 관계 아님) 예 : 이것이 xml : <root> <A>A</A> <B/> <C/> </root>이고 Node <A><A>B</A>이면 <B>필수 <A>C</A>로 설정하고 <C>필수로 설정합니다.
InfantPro'Aravind '

XSD만으로는
InfantPro'Aravind '2014 년

15

XSD :
XSD (XML 스키마 정의)는 XML (Extensible Markup Language) 문서의 요소를 공식적으로 설명하는 방법을 지정합니다.
Xml :
XML은 데이터설명 하도록 설계되었으며 소프트웨어 및 하드웨어와 독립적입니다.
다음 사항을 향상시킵니다.
-데이터 공유.
-플랫폼 독립적.
-데이터 가용성 증대.

차이점 :

  1. XSD는 XML을 기반으로 작성되었습니다.

  2. XSD는 문서에 나타날 수있는 요소와 구조를 정의하지만 XML은 그렇지 않습니다.

  3. XSD는 데이터가 올바르게 해석되도록 보장하지만 XML은 해석하지 않습니다.

  4. XSD 문서는 XML로 유효성이 검사되지만 그 반대가 항상 사실은 아닙니다.

  5. XSD는 XML보다 오류를 포착하는 데 더 좋습니다.

XSD 인코딩 할 실제 데이터와 관련하여 문서에서 사용할 수있는 요소정의합니다 .
예 :
2010 년 1 월 2 일로 표시되는 날짜는 1 월 12 일 또는 12 월 1 일을 의미 할 수 있습니다. XSD 문서에서 날짜 데이터 유형을 선언하면 XSD에서 지정한 형식을 따르게됩니다.


첫 번째 진술은 모든 것을 설명했습니다.
Ojonugwa Jude Ochalifu


6

간단한 XML 예 :

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XML 위의 XSD (설명) :

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

여기:

xs : element : 요소를 정의합니다.

xs : sequence : 언급 된 순서 대로만 자식 요소가 표시됨을 나타냅니다.

xs : complexType : 다른 요소가 포함되어 있음을 나타냅니다.

xs : simpleType : 다른 요소를 포함하지 않음을 나타냅니다.

유형 : 문자열, 십진수, 정수, 부울, 날짜, 시간,

  • 간단히 말해서 xsd는 특정 유형으로 XML 데이터를 표현하고 유효성을 검사하는 또 다른 방법입니다.
  • 추가 속성의 도움으로 여러 작업을 수행 할 수 있습니다.

  • xsd에서 모든 작업을 수행하는 것은 xml보다 간단합니다.


안녕하세요! XSD 파일을 생성하려면 어떤 프로그램을 사용해야합니까?
Judith

@Judith 프로그램? 질문을 설명해 주시겠습니까? 편집기 나 언어 또는 도구처럼?
shubham1js

1

기본적으로 XSD 파일은 XML 파일의 모양을 정의합니다. XML 파일의 구조를 정의 하는 스키마 파일 입니다. 따라서 가능한 필드가 무엇인지, 그리고 어떤 크기가 될지 지정합니다.

XML 파일은 XSD에 정의 된 규칙을 사용하므로 XSD 의 인스턴스 입니다.


0

XML은 f.ex보다 훨씬 더 광범위한 응용 프로그램을 가지고 있습니다. HTML. 내장 또는 기본 "응용 프로그램"이 없습니다. 따라서 웹 페이지가 허용되는 항목에 의해 관리된다는 사실은 신경 쓰지 않을 수도 있지만 작성자 측에서는 XML 문서에 포함 할 수있는 것과 포함하지 않을 수있는 것을 정확하게 정의하고 싶을 것입니다.

데이터베이스를 디자인하는 것과 같습니다.

XML 기술의 특징은 본질적으로 텍스트라는 것입니다. XSD를 사용하면 PHP와 같은 텍스트 처리 도구에 "플러그인"할 수있는 데이터 구조 정의 프레임 워크가 있습니다. 따라서 데이터 자체를 조작 할 수있을뿐만 아니라 구조를 매우 쉽게 변경 및 문서화하고 프런트 엔드를 자동 생성 할 수도 있습니다.

이와 같이 볼 때 XSD는 데이터 (XML)와 데이터 처리 도구 사이의 "접착제"또는 "미들웨어"입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.