2013-04-19 3 views
47

복잡한 유형의 xsd:all을 사용하고 있습니다. 유효성 검사를하는 동안 필수 요소가 누락되면 모든 요소가 표시됩니다. 정확히 누락 된 요소는 표시되지 않습니다.<xsd:all>과 스키마 정의의 <xsd : sequence>의 차이점은 무엇입니까?

그러나 내가 사용하는 경우 xsd:sequence 정확한 누락 된 요소를 얻을 수 있습니다.

이 두 가지간에 차이가 있습니까?

xsd:sequence : XML 요소는 동일한 순서 여야합니다.

그러나 xsd:all : XML 요소는 임의의 순서 일 수 있습니다.

+0

근본적으로이 두 가지의 차이점은 귀하의 질문에서 이미 지적한 것입니다. 그러나 이러한 두 컴포 지터의 사용과 관련된 제약 사항과 XSD 제작시 이러한 제약 사항의 의미는 XSD 1.0 또는 XSD 1.1과 관련이 있습니다. –

+1

ur 질문처럼 보이는 이유는 시퀀스 및 누락 된 요소를 찾을 때 다른 방식으로 모든 쓰기 오류에 대한 것입니다. 나는 그것이 파서 로직에 관한 것이라고 생각한다. – Nasir

+0

이미이 질문에 대한 대답이 있는가? 정확한 누락 된 개체를 얻으려면 항상 을 사용해야하는지 알고 싶습니다. – GertV

답변

86

< xsd:all가> 자식 요소는 임의의 순서로 나타날 수 있음을 지정합니다.

< xsd:sequence>는 하위 요소가 언급 된 순서로만 나타날 수 있음을 지정합니다.순서에 대한

예 :이 같은

<xs:element name="compElement"> 
<xs:complexType> 
<xs:sequence> 
    <xs:element name="ele1" type="xs:string"/> 
    <xs:element name="ele2" type="xs:string"/> 
    <xs:element name="ele3" type="xs:string"/> 
    <xs:element name="ele4" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 

당신이 다음이 XSD에서 XML을 생성하는 경우, 그것은 무언가 : 모든

<compElement> 
    <ele1>First</ele1> 
    <ele2>Second</ele2> 
    <ele3>Third</ele3> 
    <ele4>Fourth</ele4> 
</compElement> 

예 :

<xs:element name="compElement"> 
<xs:complexType> 
<xs:all> 
    <xs:element name="ele1" type="xs:string"/> 
    <xs:element name="ele2" type="xs:string"/> 
    <xs:element name="ele3" type="xs:string"/> 
    <xs:element name="ele4" type="xs:string"/> 
</xs:all> 
</xs:complexType> 
</xs:element> 

하는 경우 이 xsd에서 XML 파일을 만들면 다음과 같이됩니다 :

XSD에 91,363,210
<compElement>  
    <ele2>Second</ele2> 
    <ele1>First</ele1> 
    <ele4>Fourth</ele4> 
    <ele3>Third</ele3> 
</compElement> 

More info : 모든 XSD에 More Info : 나는 당신의 quetion 대답 순서

희망.

+0

안녕 Joshi .. 안녕하세요 Joshi .. 고마워요. 내 질문은 xsd xsd 사용하여 xsd에 대한 xml 유효성을 검사 할 때 : 모든 정확한 missed 요소를 표시하지 않습니다. 예를 들어 element1 예상 .. 대신 모든 요소를 ​​element1, element2 표시됩니다. , element3, EXPECTED하지만 element2와 element3에 대해 minOccurs = 0을주었습니다. – user1679378

+1

"all"요소의 "minOccurs"속성을 0으로 지정할 수 있습니다. 자세한 내용은 http://www.w3schools.com/schema/el_all.asp를 참조하십시오. – Joshi

16

차이 :

  • XSD 모든 - "자식 요소가 임의의 순서로 나타날 수 있고, 각각의 하위 요소는 0 또는 1 시간이 발생할 수있다"(즉, maxOccurs에 0이 될 수도 있고 1)
  • 의 xsd : 순서는 - "자식 요소는 순서에 표시해야하는 각 자식 요소는 여러 번 0에서 발생할 수 있습니다."

에서 (즉, maxOccurs에 0 또는 번호 또는 '억제 할 수없는'를 할 수 있습니다) W3Schools 자습서 herehere.

+3

입자의 카디널리티에 대한 제약 조건을 XSD 1.0에만 한정해야합니다. 그렇지 않으면 XSD 1.1에서 올바르지 않습니다. –

+6

w3schools는 W3C와 관련이 없으므로 해당 웹 페이지는 W3C 문서가 아닙니다. –

+0

@kamituel''이 자식 요소가 발생할 수있는 횟수를 제한하는 곳에 인용 할 수 있습니까? W3C 사양에서이 사실을 확인할 수 없습니다. –

2

모든 표시 등 <all> 표시가 자식 요소는 어떤 순서로 표시 할 수있는, 각각의 하위 요소가 한 번만 발생해야 함을 지정

:

순서 표시기

<sequence> indic ATOR는 자식 요소가 특정 순서로 표시해야 함을 지정합니다

reference link

+2

입자의 카디널리티에 대한 제약 조건을 XSD 1.0에 한정하여 정규화해야합니다. 그렇지 않으면 XSD 1.1에서 올바르지 않습니다. –

0

태그를 사용할 때 XML 문서에서 complexType으로 선언 된 모든 요소가 동일한 순서로 나타나야한다는 것을 나타냅니다. 그렇지 않으면 오류가 발생합니다. 왜냐하면 적절한 순서로 요소를 지정할 필요가 없기 때문이다.

0

스키마는 단순히 준수하는 문서를 구성하는 내용을 정의합니다.

준수 사항이보고되는 방법은 전적으로 검사기에 달려 있습니다. 어떤 필드가 누락되었는지 정확하게보고하지 못하도록하는 것은 아무것도 없지만,이 경우에는 사용하지 않는 것이 분명합니다.

버그인지 디자인인지에 관계없이 유효성 검사기 제공 업체와상의해야합니다.