3

xsd からランダムな xml ファイルを生成してランダムなテストを実行するために、ランダムな xml ジェネレーター ツールを使用したいと考えています。(私は酸素ツールを使用しています)

ランダム ジェネレーターは、生成された値にセマンティック制限を適用しません。たとえば、 p1 と p2 などの複数の要素「パラメーター」を持つ要素「パラメーター」がありますが、「パラメーター」を使用する別の要素「制約」があります。つまり、 P1, P2 がある場合、 p1 と p2 のサブセットを使用する必要があります。制約のために他のパラメーターをランダムに再生成する代わりに、ランダム ジェネレーター ツールにそれら (p1 と p2) を使用させたいと考えています。「key」、「keyref」などを使用しましたが、それでも機能しません。制限なしでどこでもランダムな文字列を生成するだけです。オプション「要素と属性の値:ランダム(制限を適用)」を選択することに言及する必要があります したがって、ランダムな値を生成するときに制限を考慮する必要がありますが、そうではありません! 助けてください..

有効な XML のサンプル:

 <system>
         <parameters>
             <parameter id="1" name="p1" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
              <parameter id="2" name="p2" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
          </parameters>
          <constraint text="p1=p2">
               <parameter name="p1"/>
               <parameter name="p2"/> 
          </constraint>
       </system>

したがって、上記の例でわかるように、生成されたすべてのxmlが無効であり、有効なものが必要なため、他のランダムパラメーターを生成する代わりに、既に生成されたパラメーターのサブセット (p1 および p2) を使用する必要があります。

無効な XML のサンプル:

   <system>
         <parameters>
             <parameter id="1" name="p1" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
              <parameter id="2" name="p2" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
          </parameters>
          <constraint text="**p3**=**p5**">
               <parameter name="**p8**"/>
               <parameter name="**p9**"/> 
          </constraint>
       </system>

ありがとう

4

1 に答える 1

0

一般に、ID 制約をチェックすると、ドキュメント生成のタスクがはるかに複雑になります。(これで NP 完全になるという主張を見たことがあると思いますが、誤解している可能性があります。) したがって、Oxygen のサンプル ドキュメント ジェネレーターに、あなたが念頭に置いている制約に従うように指示することがうまくいくとは思えません。ほとんどのジェネレーターは、コンテンツ モデルを満たすデータを生成することに満足しています。

考えている制約に従う例とそうでない例を区別するためのフィルターを作成する方が運が良いかもしれません (したがって、100 個の例を生成し、フィルターを実行して、目的に使用できるものを見つけることができます)。任意の例を取り、それを変更して制約を満たすための変換。

于 2012-12-08T01:21:32.690 に答える