xml - 生成不带 REF 元素的 XSD 文件 - 我只想要一个 "literal"XSD 文件

标签 xml visual-studio xsd biztalk

当我使用 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,它将每个“元素”标记视为可用架构,因为它们都位于根级别 - header 以及每个子元素。我只想使一个模式可用 - 在本例中为 header - 并隐藏其余部分。

显而易见的解决方案似乎是手动编辑我的文件,使其看起来像这样,手动删除 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 的情况下生成文件,而只是将元素的副本放置在应该放置的位置而不是根级别?

最佳答案

如果您有 Visual Studio BizTalk 项目,您可以选择“添加生成的项目..”,然后选择“生成架构”。

在下拉列表中选择“格式良好的 xml”,如果在您必须运行脚本来激活它之前没有人使用该选项,请参阅下面的链接。

VS 现在将生成您想要的模式类型。如果 VS 猜错了,你将不得不调整数据类型:)

查看此人的样本 Add generated schemas

关于xml - 生成不带 REF 元素的 XSD 文件 - 我只想要一个 "literal"XSD 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/678202/

相关文章:

xml - XSLT:匹配元素与命名空间不起作用

visual-studio - 如何在 Visual Studio 中出现错误波形时显示类型信息 [fsharp]

c# - 在 C# 中抑制 "is never used"和 "is never assigned to"警告

java - JAXB XJC 代码生成 - Marshaller 生成的 xml 中缺少 "schemaLocation"

java - 如何在java中使用xslt从xml中选择使用group-by

java - "java.lang.OutOfMemoryError: Java heap space"在 xml 文件上调用 FileUtils.readFileToString 时

proxy - 从 XSD 生成类型/类的参数化构造函数

java - 使用 XSD、目录解析器和用于 XSLT 的 JAXP DOM 验证 XML

java - XmlSerializer.setProperty 抛出异常

c++ - 使用 cmake、clang 和 llvm 为 visual studio 构建工具链