2013-05-25 3 views
0

다음은 params 루트 요소가 atomicParamcomplexParam 요소를 포함하는 문서를 정의하는 XML 스키마입니다. 두 유형의 요소에는 name 속성이 있습니다. 어떤 atomicParam이 동일한 값을 가져야한다 complexParam 요소의 속성 없음 일부 값 (예를 들어 foo)가있는 경우다른 요소에 대한 독점적 속성 값 집합

  1. :

    <schema xmlns="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://companyname.org/" 
           xmlns:tns="http://companyname.org/" 
    > 
    
         <element name="params" type="tns:ParamsType"/> 
    
         <complexType name="ParamsType"> 
           <sequence> 
             <element name="atomicParam" type="tns:AtomicParamType" minOccurs="0" maxOccurs="unbounded"/> 
             <element name="complexParam" type="tns:ComplexParamType" minOccurs="0" maxOccurs="unbounded"/> 
           </sequence> 
         </complexType> 
    
         <complexType name="ComplexParamType"> 
           <simpleContent> 
             <extension base="string"> 
               <attribute name="name" type="string" use="required"/> 
             </extension> 
           </simpleContent> 
         </complexType> 
    
         <complexType name="AtomicParamType"> 
           <simpleContent> 
             <extension base="string"> 
               <attribute name="name" type="string" use="required"/> 
             </extension> 
           </simpleContent> 
         </complexType> 
    
    </schema> 
    

    내 목표는 name 속성에 다음과 같은 제약 조건을 적용하는 것입니다 속성. 동시에 다른 atomicParam은 속성에 foo을 가질 수 있습니다.

  2. complexParam의 값 중 하나가 atomicParam 인 속성 중 일부 값 (예 : bar)에이 속성의 값이 같아야합니다. 동시에 다른 complexParamname 속성에 bar을 가질 수 있습니다.

이것이 가능합니까?

답변

0

XSD 1.0을 사용할 수 없습니다. 값의 고유성을 강화하는 방법은 있지만 여기에 필요한 방식에서는 다른 요소가 아닌 방법이 있습니다.

<xsd:assert test="not(atomicParam/@name=complexParam/@name)"/> 
:

은 XSD 1.1 이용 어설 수 있어야

관련 문제