---
title: "将 XML 转换为 XSD：从多个 XML 实例生成模式"
date: "2021-08-25"
categories: 
  - "development"
  - "tools"
  - "xml"
tags: 
  - "xml-editor"
  - "xml-schema"
  - "xmlspy"
  - "xsd"
description: 学习如何使用 XMLSpy，一款强大的 XML 编辑器，通过多个 XML 实例生成 XSD 模式文件，该工具简化了相关文件的模式创建过程。
---
Status: #blog

Tags:  #xml-editor #xml-schema #xmlspy #xsd

Categories: [development](/blog/zh/category/development.md) | [xml](/blog/zh/category/xml.md)
# 将 XML 转换为 XSD：从多个 XML 实例生成模式

我最近和一位我们的技术支持工程师交流，他告诉我客户经常会提出的一些常见问题。其中一个问题经常出现，那就是“如何从 XML 文件生成 XSD 模式文件？” 答案当然是使用你喜欢的 XML 编辑器。XMLSpy 可以从 DTD（文档类型定义）、关系数据库结构、JSON 模式以及 XML 实例等多种来源生成有效的 XSD 模式文件。

然而，许多顾客可能会惊讶地发现，这个 XML 编辑器还会根据用户提供的文档，自动生成一个 XML 模式（Schema） _群体_ 与相关XML文件进行关联，这是很常见的需求。接下来，我们来看看它是如何实现的。

![](/blog/images/PR112123_700x335.jpg)

<!--more-->

## 生成一个XSD文件

假设我继承了一个Web开发项目，项目起点是一组XML文件，但缺少[XML Schema](https://www.w3.org/XML/Schema)（XML模式）。为了为这些文件生成XSD，我首先需要将它们添加到XMLSpy项目中。这在之后会很有用，因为该项目将所有相关文件组织在一个易于管理的文件夹组中，我可以在其中搜索特定文件，应用XSLT转换，执行批量操作，例如整个项目的验证和查找文件内容，等等。

值得花一点时间来介绍一下 XMLSpy 项目本身。这些文件夹可能对应于文件系统中实际的目录，或者我可以为每个文件夹定义文件类型扩展名，这样可以将常见的文件集中在一个方便的位置。这些项目文件夹是虚拟文件夹，不需要与服务器上文件的任何层级结构相对应。

我还可以为每个文件夹分配不同的XSL转换参数，并且同一个物理文件可以包含在多个项目文件夹中。这在需要将数据保存在一个XML文件中，并使用不同的XSL样式表生成不同输出结果时特别有用。此外，XMLSpy的项目管理功能与大多数版本控制系统集成。

好的，我们回到[生成XSD](https://www.altova.com/zh/xmlspy-xml-editor/xsd-to-xml)的步骤。第一步是从“项目”菜单中选择“新建项目”。XMLSpy会创建一个包含各种文件类型的占位符文件夹的基本项目。根据需要，可以轻松添加自定义文件夹。为了将我收到的文件添加到这个新项目中，我右键单击“XML文件”文件夹，然后选择“添加文件...”

![创建 XML 项目](https://lh3.ggpht.com/-CU_6VD_ekWM/UP6ivUhf0nI/AAAAAAAAATE/NjKHHB7Ms7Q/clip_image001_thumb.png?imgmax=800 "Creating an XML Project")

...然后浏览并选择用于网站的XML文件。现在是给项目保存一个具有描述性的名称的好时机，同时这也会将新添加的文件关联保存到项目中。

![XML 项目](https://lh5.ggpht.com/-V3GvW60FxRw/UP6iwRG9DuI/AAAAAAAAATU/nm9geL3zWhA/clip_image002_thumb.png?imgmax=800 "XML Project")

现在，我只需要右键点击“XML 文件”文件夹，选择“生成 DTD/Schema…”，然后查看或更新可配置的选项即可。

![XMLSpy软件中提供的XSD到XML转换功能](https://lh3.ggpht.com/-tqOErpnsdVo/UP6ixFWQwAI/AAAAAAAAATk/1TCQL6s_ubM/clip_image003_thumb.png?imgmax=800 "Generate XSD Dialog")

这将会根据文件夹中包含的所有 XML 文件生成一个 XSD 文件。点击“确定”后，系统会提示您保存自动生成的 XML 模式文件，并将其打开在...（此处省略具体打开的软件或界面） [图形化 XML 模式视图](https://www.altova.com/zh/xml-schema-editor.html). 以下是根据 XML 实例文件生成的全局元素：

![基于多个XML实例生成的XSD文件](https://lh6.ggpht.com/-5xXyRqVd_jo/UP6ixwkADUI/AAAAAAAAAT0/UQ5bJfBpFaY/clip_image004_thumb.png?imgmax=800 "Schema Globals")

点击任何元素旁边的树形图标，即可查看该元素的详细内容模型。

![可编辑的 XML 模式 (XSD) 内容模型](https://lh4.ggpht.com/-V7dptViaW9w/UP6iypwrRqI/AAAAAAAAAUE/RI7IL9P1Ojg/clip_image005_thumb.png?imgmax=800 "XSD Content Model")

[XSD 编辑器](https://www.altova.com/zh/xmlspy/xsd-editor.html) 的图形化设计理念，使得用户可以轻松地调整和编辑该模式，以满足实际需求。

就这样，通过几个简单的步骤，我就可以根据一组实例文件生成一个有效的模式。

哪些 XMLSpy 的功能可以帮助您更轻松地完成日常工作？或者，您希望看到哪些可以节省时间的特性被添加？我们非常乐意听取您的反馈。请在下方留言！
