Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >XML模式迁移

XML模式迁移
EN

Stack Overflow用户
提问于 2009-08-04 16:31:23
回答 3查看 3.2K关注 0票数 5

我正在做一个项目,我们需要用XML格式保存数据。问题是,随着时间的推移,我们期望数据的格式/模式发生变化。我们想要做的是生成脚本,以便在不同的模式版本之间迁移数据。我们将产品分发给成千上万的客户,因此我们需要能够在客户站点上运行/应用这些脚本(因此我们不能仅仅通过手工进行转换)。我认为我们正在寻找的是某种XML数据迁移工具。在我看来,理想的工具可以:

  1. 执行两个模式的"XML“来标识添加/删除/更改的节点。
  2. 允许我们指定转换函数。因此,例如,我们可以向模式中添加一个新元素,它是旧元素的函数。(例如,新元素C,其中C= A+B,A+B是旧元素)。

因此,我想我正在寻找一种XML差异和补丁工具,它也可以应用转换函数。我正在寻找的一个工具是阿尔托瓦氏MapForce。我相信这里的其他人必须处理XML数据格式的迁移。你是怎么处理的?

编辑:有一点需要澄清。我计划做的"diff“是关于模式或.xsd文件的。将对遵循给定架构的特定数据集进行实际更改。这些数据集将是.xml文件。因此,这是模式的“差异”,以帮助了解需要对数据集进行哪些更改,以便将数据集从一个方案迁移到另一个方案。

EN

回答 3

Stack Overflow用户

发布于 2009-08-04 16:52:22

“执行两个模式的"XML”来标识添加/删除/更改的节点。“

XSD是文本,所以这是微不足道的。

但是,如果您对XSD进行了戏剧性的结构更改,那么自动化的差异将基本上是无用的。

如果您对XSD做了一些小的、美观的更改,这可能会有所帮助。

“允许我们指定转换函数……”

那不是很好吗。遗憾的是,出现一些琐碎更改(“新元素C,其中C= A+B,A+B是旧元素”)的概率几乎为零。为什么要做那种微不足道的改变呢?

不,当你“.把我们的产品分发给成千上万的顾客”时,你不会做一些琐碎的、表面上的改变。您保存这些更改,使它们成为真正的史诗,并“创造重大的价值”。

不,自动模式迁移的可能性几乎为零。

相反,为可移植性而设计。

  1. 确保版本号在XSD路径中突出。理想情况下,在XSD名称本身。
  2. 每个XSD更改都是一个严重的治理问题(SGI™)。每个人都参与。然后立即编写迁移脚本。之后不会。不是用工具。但作为XSD变更的一部分。 模式不会自发改变。有人改变他们是有原因的。可以指定更改,以便其他人可以编写(或更新)迁移脚本。

这太严重了,无法信任“自动化”工具。这需要真正的人的大脑,真正专注于此,就好像他们的工作依赖于它。

票数 5
EN

Stack Overflow用户

发布于 2010-05-30 18:08:15

最后,我编写了一个工具来完成这个任务,并将结果作为一个SourceForge项目发布。

什么:这个工具帮助创建脚本,将XML数据从XML的一个版本迁移到同一模式的更高版本。该工具通过差异XSD文件和释放XSLT2.0来自动迁移XML数据来创建这些脚本。这对于简单的数据更改很好,并且可以作为更复杂的数据更改的“启动”代码使用。

Where: https://sourceforge.net/projects/xsdevolver/

背景:我工作的公司销售一个收缩包装的应用程序,在该应用程序中,我们按照指定的XSD模式以XML格式保存工作簿。随着时间的推移,我们期望此模式的格式会发生变化。我们希望有一种方法来帮助我们区分模式版本,因为它们会随着时间的推移而发展,并生成初始XSLT来将数据从旧版本的模式迁移到新版本的模式。

使用:

XMLSchemaEvolver SchemaVersion1.xsdSchemaVersion2.xsd

输出:

  1. 显示已更改哪些元素的架构差异。
  2. XSLT将XML数据从SchemaVersion1转换为SchemaVersion2

它是如何工作的?

其基本思想是:

1)对两个xml模式(xsd)文件进行区分。

2)每项更改都被归类为插入、删除、移动或重命名操作。

3)对于这些操作中的每一个,发出简单的XSLT来执行所需的数据更改。

4)这些数据更改操作是根据Jesper 链接文本建议的一组标准XSLT操作进行建模的。我们的代码发出的转换的完整列表可以在文档文件夹中找到XSLT Transformations.txt。

票数 3
EN

Stack Overflow用户

发布于 2009-08-04 17:12:19

正如@S.Lott所说,自动化转换的能力是不太可能的。然而,XSLT是正式定义如何将XML从一种格式转换为另一种格式的极好工具。它不能自动生成(据我所知),但它很值得这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1230601

复制
相关文章
node+express构建后端项目
项目启动后,在浏览器就可以访问了localhost:3000,访问成功会出现以下页面
程序员不务正业
2019/09/29
1.3K0
《Node.js+Express+Vue项目实战》-- 1.安装和使用Express(笔记)
Express 是一个精简、灵活的 Node.js 的 Web 应用程序开发框架,为 Web 和移动应用程序提供了一组强大的功能,使用 Express 可以快速地开发一个 Web 应用。
爱学习的程序媛
2022/04/07
4.3K0
《Node.js+Express+Vue项目实战》-- 1.安装和使用Express(笔记)
TypeScript在node项目中的实践
TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法。 最近的一个新项目开始了TS的踩坑之旅,现分享一些可以借鉴的套路给大家。
贾顺名
2019/12/09
1.7K0
TypeScript在node项目中的实践
使用 Node.js 和 Express.js 搭建简易 HTTP/2 服务器
自从 1975 年左右使用 TCP/IP 协议的现代互联网诞生至今已经过了惊人的41年了。在它生涯的大部分时间里,我们使用 HTTP 以及它的继任者 HTTP/1.1 (1.1 版本) 在客户端和服务器之间进行通讯。它很好的支撑起了这个网络世界,但是开发者们构建网站的方式发生了巨大的变化。现在有无数的外部资源、图片、CSS 文件和 JavaScript 文件。这些资源的数量只增不减。
疯狂的技术宅
2019/03/27
2.9K0
使用 Node.js 和 Express.js 搭建简易 HTTP/2 服务器
node.js + express 后端项目小坑
PROTOCOL_CONNECTION_LOST PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR
程序员不务正业
2020/02/18
1.5K0
node Express 框架
Express事实上Node内置的http模块上构建的一层抽象。理论上所有Express实现的功能都能用Node实现
mySoul
2018/07/29
5.3K0
Node.js 项目 TypeScript 改造指南
如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。
五月君
2019/12/06
8.4K0
Node.js 项目 TypeScript 改造指南
Node.js项目TypeScript改造指南
如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。
coder_koala
2019/12/05
4.6K0
使用Typescript开发node.js项目
typescript 通过构造函数的参数直接定义属性,为了证明,我们创建一个info.ts文件 内容如下
lilugirl
2019/05/28
2.6K0
Node.js项目TypeScript改造指南
如果你有一个 Node.js 项目,并想使用 TypeScript 进行改造,那本文对你或许会有帮助。
WecTeam
2019/12/24
4.4K0
如何运行github上面的node+express项目
在学习过程之中,除了看完教程之外,我们还需要完成一个重要的步骤,那就是做一个项目来巩固和联系,就像是学生时代那般,上完课是要找作业来练习加深印象是一个道理。
王小婷
2019/03/04
1.2K0
如何运行github上面的node+express项目
node框架express的研究
在node中,express可以说是node中的jQuery了,简单粗暴,容易上手,用过即会,那么我们来试一下怎么实现。下面我们基于4.16.2版本进行研究
lhyt
2022/09/21
9560
node框架express的研究
Node.js 项目 TypeScript 改造指南(二)
最近笔者把一个中等规模的 Koa2 项目迁移到 TypeScript,和大家分享一下 TypeScript 实践中的经验和技巧。
WecTeam
2019/12/26
3.6K0
Node | Express简单使用
express提供了一个非常好用的函数,叫做express.static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过如下代码就可以将static目录下的图片、CSS文件、JavaScript 文件对外开放访问了:
倾盖
2022/08/16
1K0
Node | Express简单使用
Node.js + express 的使用
变化的路由 我们再访问服务器时描绘涉及到许许多多的路由,这是我们不可能将他们都一一列举出来,所以我们就可以用 ‘ :’ 来解决,如下:
圆号本昊
2021/09/24
2.7K0
Node + Express + Mysql的CMS小结
因为之前用过上述的组合完成过很多系统,而这一次是为了实现一个帮助系统的静态网页发布。因为很久不写,重点说遇到的几个坑:
meteoric
2018/11/19
1.5K0
Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序
上次修改时间:2020年10月16日 bezkoder Full Stack,Node.js,Vue.js
ccf19881030
2020/11/10
25.1K0
Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序
express:node throwing error on mongodb
与此类似node throwing error on mongodb,一直报Db.open那里出错,查源代码,发现应该是有err参数传入,因为之前从来没接触过mongodb--在某些文章中看到稍微有些了解,觉得是不是没有安装mongodb的问题呢?试了一下,果然如此。
meteoric
2018/11/16
5390
Express,Sequelize和MySQL的Node.js Rest API示例
本文翻译自Node.js Rest APIs example with Express, Sequelize & MySQL
ccf19881030
2020/11/10
12.7K0
Express,Sequelize和MySQL的Node.js Rest API示例
一种不错的 BFF Microservice GraphQL/REST API 层的开发方式
云原生(Cloud Native)Node JS Express Reactive 微服务模板 (REST/GraphQL) 这个项目提供了完整的基于 Node JS / Typescript 的微服务模板,包括生产部署、监控、调试、日志记录、安全、CI/CD 所需的所有功能。还添加了基于响应性扩展的示例,以演示如何将其用于构建微服务 API 边缘服务(edge-service)、前端的后端(BFF)或将其用作构建任何类型微服务的基础。
为少
2021/05/27
2.4K0
一种不错的 BFF Microservice GraphQL/REST API 层的开发方式

相似问题

微软认可的带有node/express的TypeScript入门项目没有任何类吗?

10

设置node.js & express项目

115

TypeScript与现有Node js express项目的集成

112

为Node/Express/类型记录和Node设置一个项目

20

使用typescript项目设置node.js

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文