2014-10-07 2 views
0

이 요소 중 하나의 값에 따라 다른 하위 요소가있는 요소를 만드는 것을 좋아합니다. 나는 이것이 어떻게 달성 될 수 있는지 궁금하다. Typepiece 인 경우 Weight 요소가 있어야합니다. Typekilogram 또는 gram 인 경우 ... 필요하지 않습니다.xml 값이 다른 하위 요소가있는 스키마 제한 목록

<?xml version="1.0" encoding="UTF-8"?> 
    <Amounts> 
     <Amount> 
      <Type>piece</Type> 
      <Value>6</Value> 
      <Weight> 
       <Value>1.5</Value> 
       <Type>liter</Type> 
      </Weight> 
     </Amount> 
     <Amount> 
      <Type>kilogram</Type> 
      <Value>0.610</Value> 
     </Amount> 
    </Amounts> 

나는 이렇게 생각할 수도 있지만 오류가 발생합니다 (아래 참조). 나는 5 행에서 얻을

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.test.org/amount" 
    xmlns:amount="http://www.test.org/amount" elementFormDefault='qualified'> 
    <element name="Amount"> 
     <complexType> 
      <choice> 
       <group ref="amount:kilogram" /> 
       <group ref="amount:piece" /> 
      </choice> 
     </complexType> 
    </element> 
    <group name="kilogram"> 
     <sequence> 
      <element name="Type" fixed="kilogram" /> 
      <element name="Value" type="float" /> 
     </sequence> 
    </group> 
    <group name="piece"> 
     <sequence> 
      <element name="Type" fixed="piece" /> 
      <element name="Value" type="int" /> 
      <element name="Weight"> 
       <complexType> 
        <sequence> 
         <element name="Type" type="amount:amountType" /> 
         <element name="Value" type="float" /> 
        </sequence> 
       </complexType> 
      </element> 
     </sequence> 
    </group> 
    <simpleType name="amountType"> 
     <restriction base="string"> 
      <enumeration value="kg" /> 
      <enumeration value="g" /> 
      <enumeration value="mg" /> 
      <enumeration value="lb" /> 
     </restriction> 
    </simpleType> 
</schema> 

오류는 다음과 같습니다

다중이 라인에서 찾을 주석 : - COS-nonambig : "http://www.test.org/amount"를 입력하고 "http://www.test.org/amount"에서 유형 (또는 요소들이 대체 그룹)은 "고유 한 입자 속성"을 위반합니다. 이 스키마에 대한
의 유효성 검증 중에 두 개의 입자에 대해 모호성이 작성됩니다. - cos-element-consistent : '#AnonType_Amount'유형의 오류입니다. 여러 유형의 이름이 '값'인 요소는 모델에 그룹으로 표시됩니다.

답변

1

요소가 아닌 "유형"특성을 만든 경우 조건부 유형 할당을 사용하여 XSD 1.1에서이를 수행 할 수 있습니다. 그렇지 않으면, 미안, 운이 없어.

+0

흠 좋습니다. 예를 들어 XSD 1.1에서 간단한 예를 들려 줄 수 있습니까? 나중에 다시 시도하고 대답을 확인해 보겠습니다. – DarsVaeda

+0

Priscilla Walmsley는 조건부 유형 할당에 대한 몇 가지 예를 다음과 같이 제공합니다. http://www.datypic.com/books/defxmlschema/chapter14.html (제대로 이해하고 싶다면 책을 구입하십시오!) –

관련 문제