[xml] 스키마 정의에서 <xsd : all>과 <xsd : sequence>의 차이점은 무엇입니까?

xsd:all복잡한 유형으로 사용 하고 있습니다. 유효성을 검사하는 동안 필수 요소를 놓친 경우 모든 요소가 표시됩니다. 누락 된 정확한 요소는 표시되지 않습니다.

그러나 내가 사용한다면 xsd:sequence정확히 놓친 요소를 얻을 수 있습니다.

이 둘 사이에 차이점이 있습니까?

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

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



답변

<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 파일을 생성하면 다음과 같이 보일 수 있습니다.

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

더 많은 정보 XSD에 대한 모든
추가 정보 XSD에 : 순서

질문에 답했으면 좋겠습니다.


답변

차:

  • xsd : all “자식 요소는 임의의 순서로 나타날 수 있으며 각 하위 요소는 0 또는 한 번 발생할 수 있습니다.”(즉, maxOccurs는 0 또는 1 일 수 있음)
  • xsd : sequence- “하위 요소는 시퀀스에 나타나야합니다. 각 하위 요소는 0에서 여러 번 발생할 수 있습니다.”(즉, maxOccurs는 0 또는 임의의 숫자이거나 ‘제한되지 않음’일 수 있음)

여기여기에 있는 W3Schools 자습서 에서 .


답변

모든 표시기

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

시퀀스 표시기

<sequence>자식 요소가 특정 순서에 표시해야 함을 표시 지정 :

참조 링크


답변

스키마는 준수 문서를 구성하는 항목을 정의 할뿐입니다.

비준수보고 방법은 전적으로 검증 인에게 달려 있습니다. 유효성 검사기가 누락 된 필드를 정확히보고하는 것을 막을 수는 없지만 사용하는 필드는이 경우에 그렇지 않습니다.

그것이 버그이든 의도적 으로든 유효성 검사기 공급자와 논의해야합니다.


답변

간단한 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 : 요소 정의합니다.

xs : all : 자식 요소가 임의의 순서로 나타날 수 있음을 나타냅니다.

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

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

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

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

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

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


답변

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


답변