2010-09-07 72 views
0

我写一个软件包,其任务是从我公司的主要产品出口DB数据转换成任意的XML格式(与其他应用程序接口)的任意XML数据文件到我们的数据库的解析可能是下一个。我用C/C++编写,产品的数据库以专有格式存储为Pervasive BTRV文件。如何指定从专有数据库到XML的映射?

我需要写一个映射格式,可以在我们的内部数据元素映射到XML的,所以如果我出口包被赋予一个映射文件,将创建一个从数据库的内容所需的XML输出文件。你会推荐我用什么策略或工具来实现这一点?

有些选项我已考虑:

  1. 制定针对该产品的通用的XML输出模式,然后写XSLT文件,这种格式转换成任意的XML文件。
  2. 编写定义输出文件的结构的XSD架构文件,并设计了处理指令集,告诉我的包,其中数据项的元素去。

我认为自己是使用XML的新手;我熟悉XSLT和XPath,并开始学习Schema,但可能有明显的工具可以解决我缺少的这个问题。

更新,8:14p PDT:我正在编写的包被设计用来挂接到我们的通用外部接口模块,用于导出将被其他应用程序使用的数据。子集将会自动以其他应用程序可以理解的格式导出,我试图扩展外部接口模块,使其能够输出这些“最终确定”的数据项XML。

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

将被调用我的代码的代码把数据库的项目,如一系列嵌套的容器,并且用于格式化每个嵌套层提供钩。这些挂钩似乎非常类似于在< XSL的比赛属性:模板>,这是什么导致我考虑XSLT作为一个可能的解决方案)

+0

对于每个信息系统,用例都是其定义的一部分。如果这些导出的XML文档将被使用,那么应用程序将会使用这些文档,并且它们将变得非常庞大并且没有复杂的模式(数据库转储),然后使用数据库转储。如果这些goint具有复杂的模式,而且仅包含大型应用程序和应用程序,请使用定义的模式导出(也许您必须重新考虑您的数据库引擎功能)。如果将一个导出的XML文档用于多个可显示的格式化文档,则使用多个XSLT样式表。 – 2010-09-07 22:06:08

回答

0

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

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

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