2017-05-03 11 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

理想的には、誰がそのパラメータを定義するのかは私になります。私は、これらの2つのパラメータを渡す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()"/> 
関連する問題