如何指定从专有数据库到XML的映射?

时间:2010-09-07 21:12:56

标签: xml xsd export-to-xml

我正在编写一个软件包,其工作是将我公司主要产品中的数据库数据导出为任意XML格式(用于与其他应用程序连接。)可以接下来将任意XML数据文件解析到我们的数据库中。我用C / C ++编写,产品的数据库以专有格式存储为Pervasive BTRV文件。

我需要编写一个可以将内部数据元素映射到XML的映射格式,这样如果我的导出包被赋予了映射文件,它将从数据库的内容创建所需的XML输出文件。我建议您使用哪些策略或工具来完成此任务?

我考虑过的一些选项:

  1. 为产品设计一个通用的XML导出模式,然后编写XSLT文件以将此格式转换为任意XML文件。
  2. 编写一个定义输出文件结构的XSD Schema文件,并设计一组处理指令,告诉我的包哪些数据项包含哪些元素。
  3. 我认为自己是使用XML的新手;我熟悉XSLT和XPath,并开始学习Schema,但可能有一些明显的工具可以解决我所缺少的这个问题。

    更新,8:14p PDT :我正在编写的软件包旨在挂钩到我们的通用外部接口模块,用于导出将被其他应用程序使用的数据。使用,当数据库的一个子集发生变化或“最终确定”时,该子集将以其他应用程序可以理解的格式自动导出。我试图扩展外部接口模块,使其能够输出这些“最终的” “XML中的数据项。

    我的工作是定义一种指定其他系统所期望的XML格式的方法。由于目标模式在应用程序之间可能存在很大差异,因此我需要一种可以处理一系列可能的XML模式的解决方案;我还需要一个易于为每个接口配置/维护的解决方案。

    将调用我的代码的代码将数据库项视为一系列嵌套容器,并提供用于格式化每个嵌套层的钩子。这些钩子似乎与< xsl:template>上的 match 属性非常相似,这使我认为XSLT是一种可能的解决方案。)

1 个答案:

答案 0 :(得分:0)

我建议将数据库输出到XML文件,并使用XSLT将其转换为对方需要的任何XML格式,并为每个转换使用不同的XSLT样式表。这样,您只需更改XSLT文件即可连接各种应用程序。

如果您使用架构感知处理器或Altova XMLSpy之类的工具,我建议您为数据库的XML文件创建架构。它可以为你节省很多头发。如果另一方的XML很复杂,我也会为它创建一个模式。

模式的优点除了验证文件和更好地理解结构外,还有像XMLSpy这样的工具会自动帮助您使用字段,帮助您使用XPath等等。此外,如果你为它提供两个模式(尚未尝试过),像MapForce这样的工具甚至可以为你创建XSLT。