Как создать случайный XML-файл, который является семантически действительным?

Я хочу использовать инструмент генератора случайных XML, чтобы выполнить случайное тестирование путем генерации случайных файлов XML из XSD. (Я использую кислородный инструмент)

Генератор случайных чисел не будет применять семантические ограничения к сгенерированным значениям. например, у меня есть элемент "параметры", который имеет несколько элементов "параметр", например, p1 и p2, с другой стороны, у меня есть еще один элемент "ограничение", который будет использовать "параметр". Я имею в виду, если у меня есть P1, P2, он должен использовать подмножество p1 и p2. Я хочу заставить инструмент генератора случайных чисел использовать их ( p1 и p2) вместо случайной генерации некоторых других параметров снова для ограничения. Я использовал "ключ", "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>

Поэтому я хочу использовать подмножество уже сгенерированных параметров ( p1 и p2), как вы можете видеть в приведенном выше примере, вместо генерации некоторых других случайных параметров, потому что тогда все сгенерированные xmls являются недействительными, и я хочу действительный.

ОБРАЗЕЦ неверного 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>

Спасибо

1 ответ

В общем, проверка ограничений идентичности значительно усложняет задачу создания документа. (Я полагаю, что однажды я увидел заявление о том, что он делает NP завершенным, но, возможно, меня неправильно поняли.) Поэтому я сомневаюсь, что вам повезет, если вы расскажете генератору примеров документов Oxygen, чтобы он соблюдал ограничение, которое вы имеете в виду; большинство генераторов довольствуются производством данных, удовлетворяющих моделям контента.

Возможно, вам повезет больше, написав фильтр, чтобы отличать примеры, которые подчиняются имеющемуся у вас ограничению, от примеров, которые этого не делают (так что вы можете сгенерировать 100 примеров и запустить фильтр, чтобы найти те, которые пригодны для ваших целей), или преобразование, чтобы взять произвольный пример и изменить его, чтобы удовлетворить ваши ограничения.

Другие вопросы по тегам