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

Я хочу использовать инструмент случайного генератора xml для выполнения случайного тестирования путем создания случайных файлов xml из xsd. (Я использую кислородный инструмент)

Генератор случайных чисел не будет применять семантические ограничения к сгенерированным значениям. например, у меня есть элемент «параметры», который имеет несколько элементов «параметр», например, 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>

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

ПРИМЕР недопустимого 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>

Спасибо


person user1860496    schedule 28.11.2012    source источник
comment
Вы просите какой-то уже существующий инструмент? Или написать требования для кого-то, чтобы написать один?   -  person user17753    schedule 28.11.2012
comment
Инструмент, который я собираюсь протестировать, уже существует. Генератор случайных чисел также доступен (OXYGEN), но я не знаю, как я могу генерировать действительный xml, как я объяснил выше, генератор случайных чисел будет генерировать файлы xml, их синтаксис правильный, но их семантика нет! Я не знаю, ясен приведенный выше пример или нет?   -  person user1860496    schedule 28.11.2012


Ответы (1)


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

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

person C. M. Sperberg-McQueen    schedule 08.12.2012