XML (Extensible Markup Language)과 XSD (XML Schema)의 차이점은 무엇입니까?
XML (Extensible Markup Language)과 XSD (XML Schema)의 차이점은 무엇입니까?
답변:
실제로 XSD는 XML 자체입니다. 그 목적은 다른 XML 문서의 구조를 확인하는 것입니다. XSD는 모든 XML에 필수는 아니지만 XML이 특정 용도로 사용될 수 있음을 보장합니다. XML에는 적절한 형식과 구조의 데이터 만 포함됩니다.
<?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.
예를 들어
<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입니다.
.. 그리고 더 많은 ...
<root> <A>A</A> <B/> <C/> </root>
이고 Node <A>
가 <A>B</A>
이면 <B>
필수 <A>C</A>
로 설정하고 <C>
필수로 설정합니다.
XSD :
XSD (XML 스키마 정의)는 XML (Extensible Markup Language) 문서의 요소를 공식적으로 설명하는 방법을 지정합니다.
Xml :
XML은 데이터 를 설명 하도록 설계되었으며 소프트웨어 및 하드웨어와 독립적입니다.
다음 사항을 향상시킵니다.
-데이터 공유.
-플랫폼 독립적.
-데이터 가용성 증대.
차이점 :
XSD는 XML을 기반으로 작성되었습니다.
XSD는 문서에 나타날 수있는 요소와 구조를 정의하지만 XML은 그렇지 않습니다.
XSD는 데이터가 올바르게 해석되도록 보장하지만 XML은 해석하지 않습니다.
XSD 문서는 XML로 유효성이 검사되지만 그 반대가 항상 사실은 아닙니다.
XSD는 XML보다 오류를 포착하는 데 더 좋습니다.
XSD 는 인코딩 할 실제 데이터와 관련하여 문서에서 사용할 수있는 요소 를 정의합니다 .
예 :
2010 년 1 월 2 일로 표시되는 날짜는 1 월 12 일 또는 12 월 1 일을 의미 할 수 있습니다. XSD 문서에서 날짜 데이터 유형을 선언하면 XSD에서 지정한 형식을 따르게됩니다.
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<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보다 간단합니다.
XML은 f.ex보다 훨씬 더 광범위한 응용 프로그램을 가지고 있습니다. HTML. 내장 또는 기본 "응용 프로그램"이 없습니다. 따라서 웹 페이지가 허용되는 항목에 의해 관리된다는 사실은 신경 쓰지 않을 수도 있지만 작성자 측에서는 XML 문서에 포함 할 수있는 것과 포함하지 않을 수있는 것을 정확하게 정의하고 싶을 것입니다.
데이터베이스를 디자인하는 것과 같습니다.
XML 기술의 특징은 본질적으로 텍스트라는 것입니다. XSD를 사용하면 PHP와 같은 텍스트 처리 도구에 "플러그인"할 수있는 데이터 구조 정의 프레임 워크가 있습니다. 따라서 데이터 자체를 조작 할 수있을뿐만 아니라 구조를 매우 쉽게 변경 및 문서화하고 프런트 엔드를 자동 생성 할 수도 있습니다.
이와 같이 볼 때 XSD는 데이터 (XML)와 데이터 처리 도구 사이의 "접착제"또는 "미들웨어"입니다.