IT TIP

XSD-두 가지 속성 중 하나가 필요합니까?

itqueen 2020. 12. 25. 10:40
반응형

XSD-두 가지 속성 중 하나가 필요합니까?


XSD에 2 개의 속성 중 하나가 필요함을 지정하는 방법이 있습니까?

예를 들어 다음과 같은 정의가 있습니다.

<xs:attribute name="Name" type="xs:string" use="optional" />
<xs:attribute name="Id" type="xs:string" use="optional" />

이 중 하나 이상이 필요하다는 것을 정의하고 싶습니다. 가능합니까?


아니요, 속성으로는 그렇게 할 수 없다고 생각합니다. 두 개 <xs:element>하나로 묶을 수는 <xs:choice>있지만 속성의 경우 동등한 구조가 없습니다.


XSD 1.1에서는 assert를 사용하여이를 수행 할 수 있습니다.

<xsd:element name="remove">
    <xsd:complexType>                        
        <xsd:attribute name="ref" use="optional"/>
        <xsd:attribute name="uri" use="optional"/>
        <xsd:assert test="(@ref and not(@uri)) or (not(@ref) and @uri)"/>            
    </xsd:complexType>
</xsd:element>

Marc가 맞습니다 ... XSD의 xs : choice 부모 요소 안에 xs : attribute 자식 요소를 가질 수 없습니다.

논리는 요소의 두 인스턴스가 상호 배타적 인 속성 집합을 갖는 경우 논리적으로 두 개의 다른 요소라는 것입니다.

이에 대한 해결 방법은 Jeni Tennison이 여기 에 제시했습니다 .


W3C wiki에서이 페이지를 봐야합니다 : Simple attribute implication and Attribute muttex


이 예제는 "employee"요소 또는 "member"요소를 포함해야하는 "person"이라는 요소를 정의합니다.

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

참조 URL : https://stackoverflow.com/questions/763072/xsd-one-of-2-attributes-is-required

반응형