Я использую Visual Studio "Generate Sample XML" для достижения этой трансформации:
XSD → (Образец) XML
Я знаю, что это называется "образец". Я ценю, что "образцы" не будут иметь значимых значений; просто значение, которое удовлетворяет ограничениям XSD
- то есть. 0 удовлетворяет
xsd:integer
ограничению типа данных, - то есть. 3 используются для удовлетворения ограничений
1..*
и0..*
sequence/minOccurs/maxoccurs - и другие соглашения
Однако, когда я нажимаю "Создать образец XML", результирующий XML не содержит тега (хотя бы один) для всех элементов, определенных в XSD.
- Я хочу "исчерпывающий" XML; то есть в результате XML содержит тег для всех элементов, определенных в XSD.
В частности, вот мои обстоятельства:
- Мой XSD имеет
<xsd:sequence>
, который позволяет использовать ряд элементов0..*
и1..*
. - Каждый из этих элементов довольно сложный; каждый из этих элементов создает образец XML, который в среднем имеет длину ~ 270 строк.
- Это
<xsd: sequence>
позволяет 120 из этих элементов; каждый из которых уникален. - Это означает, что образец XML для этого элемента
<xsd: sequence>
может быть 270 * 120 = 32 400 строк результирующего XML.
Что я нахожу, так это то, что Generate Sample XML будет не выдавать документ длиной более 6000 строк XML.
Это означает, что он не создает "исчерпывающий" XML; он ограничивает выходной XML-образец только первыми 30 тегами (в том порядке, в котором они были указаны как дочерние элементы <xsd: sequence>
в XSD ** (см. ниже) - , даже если это означает, что результирующий XML недействителен [ поскольку он может опустить требуемые элементы]);
остальные 120-30 = 90 элементы, определенные в XSD, исключены из выходного образца XML.
Может кто-нибудь объяснить, почему? Это ошибка пользователя? Есть ли обходной путь? Не нужно рекомендовать другие инструменты, если они уже описаны здесь.
Я могу перенести этот вопрос на суперпользователя, если это более уместно.
** Я считаю, что порядок, в котором элементы ссылаются как дети <xsd:sequence>
, важен; когда я переупорядочил этот порядок (например, перемещение детей 51-53, чтобы стать первыми детьми, 1-3, затем эти элементы включались в выход 6000 строк, но остальные элементы, которые они смещали, были исключены)