XML协调
以下情况是否有一种设计模式:我生成了一个XML文件,用户可以通过预定义的方式进行更改(影响属性,而不是整体结构)。在重新生成文件时,我希望重新应用用户执行的更改(如果可能)XML协调,xml,Xml,以下情况是否有一种设计模式:我生成了一个XML文件,用户可以通过预定义的方式进行更改(影响属性,而不是整体结构)。在重新生成文件时,我希望重新应用用户执行的更改(如果可能) 愚蠢的方法(虽然在我的例子中并非不可能实际实现)是将所有用户更改持久化为XSLT片段(更改某些XPath表达式标识的节点属性的小模板),并使用它来转换新生成的文件,但我觉得必须有一种更通用的方法。(文本差异不是我想要的。)当以“愚蠢的方式”生成XSLT片段时,您知道自己处于一个聪明的领域:。我倾向于将更改存储为单独的XML文
愚蠢的方法(虽然在我的例子中并非不可能实际实现)是将所有用户更改持久化为XSLT片段(更改某些XPath表达式标识的节点属性的小模板),并使用它来转换新生成的文件,但我觉得必须有一种更通用的方法。(文本差异不是我想要的。)当以“愚蠢的方式”生成XSLT片段时,您知道自己处于一个聪明的领域:。我倾向于将更改存储为单独的XML文档,并使用XSLT作为协调机制,而不是将其存储为片段。简单的例子:
<library>
<document id="5" title="test" />
</library>
用户更改“title”属性,并生成此文档(内部):
测试
然后,您就有了标准XSLT,它可以在属性更改时应用所有现有元素。虽然它不是一种真正的设计模式,但在这一领域,使用“镜头”概念的研究非常活跃,这是“行为良好的双向转换”(定义自) 这篇论文描述了关键思想,而旧的和声系统已经被冻结(大约在2008年1月)
这两个网站都有免费下载(LGPL v2.1)和PDF版本的论文。您的问题中有一些术语在XML/XSLT/XPath中可能模棱两可。你应该更好地提供所有必要的,但减少输入源和期望的输出。我需要修改XML文件,但保留不属于XML信息集的信息(例如元素内部的空白、属性顺序等)。这些“透镜”也许能够达到预期的效果。
<libraryDelta>
<document id="5">
<title>test</title>
</document>
</libraryDelta>