2017-05-03 2 views
0

저는 xsd와 xml에 관한 초보자입니다. 그래서 어떻게 다음 문제를 해결할 수 있는지 알아 내려고 노력하고 있습니다.가변 개수의 요소와 중첩 요소를 포함하는 xsd

<?xml version="1.0" encoding="UTF-8"?> 
<Package xmlns="http://soap.sforce.com/2006/04/metadata"> 

    <types> 
     <members>ECom_RU_TriggeringSearchController</members> 
     <members>ECom_RU_TriggeringSearchControllerTest</members>  
     <members>Ecom_cls_UtilityCaseActions</members> 
     <members>Ecom_cls_APAC_CaseActions</members>   
     <members>Ecom_NBA_cls_NBAResultsController</members> 
     <members>Ecom_NBA_cls_NBAResultsController_Test</members>   
     <name>ApexClass</name> 
    </types>  

    <types>   
     <members>ECom_RU_TriggeringSearch</members> 
     <name>ApexPages</name> 
    </types> 

    <types>   
     <members>*</members> 
     <name>ApexTrigger</name> 
    </types> 

    <types>   
     <members>customlabel1</members> 
     <members>customlabel2</members> 
     <name>CustomLabels</name> 
    </types> 

    <types>   
     <members>StaticResource1</members> 
     <name>StaticResource</name> 
    </types> 

    <types>   
     <members>Obj1</members> 
     <name>CustomObject</name> 
    </types> 

    <version>29.0</version> 
</Package> 

여기 유지하기 위해 중요한 것은 내가 <types>의 변수 번호를 가질 수 있으며 각 <types> 안에 내가 <members>의 변수 번호를 가질 수 있다는 것입니다 : 나는 다음과 같은 구조의 XML 파일이 있습니다. 나는 XML 파일을 표현하기 위해이 XSD를 발견

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://soap.sforce.com/2006/04/metadata" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Package"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="types" maxOccurs="unbounded" minOccurs="0"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element type="xs:string" name="members" maxOccurs="unbounded" minOccurs="0"/> 
       <xs:element type="xs:string" name="name"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element type="xs:float" name="version"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

내 질문은 : 내가 maxOccursminOccurs 속성을 사용 <types>의 변수 수를 나타냅니다 수 있어요에도 불구하고, 나는 각 <types> 내부 방법을 가질 수 있습니다 가변 수 <members>? 나는 또한 그 속성 (maxOccursminOccurs)을 사용할 수 있지만 각각의 내부 숫자가 <types>이며 그 중 <types> 요소 안에 사용될 <members>의 수로 대체 될 매개 변수를 저장할 수있는 "무언가"가 필요하다는 것을 알고 있습니다. . 나는 솔루션으로 안내 할 수있는 팁을 부탁드립니다

내가 내 설명에 충분히 분명 희망

....

미리 감사드립니다.

+0

, 당신은 당신이 설명 할 필요가 얼마나 많은 회원 나타냅니다 어딘가 매개 변수를 가지고 있고,''태그의 실제 번호를 확인하고 싶습니다 당신은이 매개 변수에 반대합니까? – potame

+0

이상적으로, 그 매개 변수를 정의 할 사람은 나입니다. 나는이 두 매개 변수를 전달할 bash 스크립트에서 숫자가 이고, 숫자가 인 이라는 숫자를 쉽게 사용할 수 있습니다. 문제는 내가 의 변수 번호로 xsd를 빌드하는 방법을 모른다는 것입니다. –

답변

0

표준 XSD 1.0에서는 수행 할 수 없습니다. 만약 내가 제대로 이해하고 XSD 1.1에서 양식의 주장을 추가 할 수

<xsd:assert test="if (name='ApexClass') then count(member)=6 else 
        if (name='...') then count(member)= 3 else 
        if ... 
        true()"/>