当我使用 XML 示例文件生成 XSD 时,同时使用 Visual Studio 和 Oxygen,它会使用 ton of 生成一个文件<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 的情况下生成文件,而只是将元素的副本放在它应该在的位置而不是根级别?