Когда я использую файл примера XML для генерации XSD, используя и Visual Studio, и Oxygen, он генерирует файл, используя тонны <xs:element ref="ELEMENTNAME" />
, где elementname - это фактическое имя элемента. Позже в файле есть элемент <xs:element name="ELEMENTNAME" type="xs:string" />
, где он определяет, что это за элемент. Например, вот выдержка:
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element ref="VersionNumber" />
<xs:element ref="BillerGroupID" />
<xs:element ref="BillerGroupShortName" />
<xs:element ref="BillerID" />
<xs:element ref="BillerShortName" />
<xs:element ref="FileIndicator" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="VersionNumber" type="xs:string" />
<xs:element name="BillerGroupID" type="xs:string" />
<xs:element name="BillerGroupShortName" type="xs:string" />
<xs:element name="BillerID" type="xs:string" />
<xs:element name="BillerShortName" type="xs:string" />
<xs:element name="FileIndicator" type="xs:string" />
Вот в чем проблема - я использую Microsoft Biztalk, и он видит каждый тег «Элемент» в качестве доступной схемы, потому что все они находятся на корневом уровне - заголовке, вместе с каждым дочерним элементом. Я просто хочу сделать одну схему доступной - в данном случае заголовок - и скрыть остальные.
Очевидное решение, похоже, состоит в том, чтобы вручную отредактировать мой файл, чтобы он выглядел следующим образом, вручную удаляя операторы REF:
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element name="VersionNumber" type="xs:string" />
<xs:element name="BillerGroupID" type="xs:string" />
<xs:element name="BillerGroupShortName" type="xs:string" />
<xs:element name="BillerID" type="xs:string" />
<xs:element name="BillerShortName" type="xs:string" />
<xs:element name="FileIndicator" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
Однако, поскольку мой файл огромен и содержит тысячи элементов, это не очень возможно. Есть ли способ сообщить моему инструменту о создании файла без использования REF, а вместо этого просто поместить копию элемента там, где он должен быть, а не на корневом уровне?