XSLT - 将字符串转换为节点集,或查找创意替代方案

时间:2016-04-27 15:22:28

标签: xml xslt

所以,首先,我知道我的问题的快速答案:不可能。我知道稍长的答案,使用document()函数从外部资源加载它。我采用了这种方法,效果很好。但是,性能不是很好,性能是这个项目的要求,所以我正在寻找更好的方法。

项目很简单,主要是。使用XSLT 1.0合并两个XML文档。两个文档都具有相同的模式,一个表示旧数据,另一个表示新数据。最终文档应该具有旧数据文档的完整模式,但新数据文档中包含的任何值都应该替换旧数据。

我无法提供实际代码,因为正在处理的数据是专有的,但这里有一些示例来说明我在说什么:

旧数据XML:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Field1>OldValue1</Field1>
    <Field2>OldValue2</Field2>
    <Field3>OldValue3</Field3>
    <Field4>OldValue4</Field4>
    <Field5>OldValue5</Field5>
</Document>

新数据XML。请注意,只有两个字段具有值:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Field3>NewValue3</Field3>
    <Field5>NewValue5</Field5>
</Document>

最终XML,新数据合并在:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
    <Field1>OldValue1</Field1>
    <Field2>OldValue2</Field2>
    <Field3>NewValue3</Field3>
    <Field4>NewValue5</Field4>
    <Field5>OldValue5</Field5>
</Document>

所以,就像我说的那样,从外部文件路径加载新的数据文档工作正常,但它会降低性能,因为我们要使用的最终文件可能会很大,性能很重要。

我的公司实际执行此转换的应用程序提供了一些方便的神奇方法,可以将内存中定义的String值放入XSLT中。问题是让XSLT将String识别为文档。

我已经尝试了我能在网上找到的所有东西,而且我一直空着。可以提供的任何帮助都很棒。我现在感到难过。

我可以将String转换为节点集(它总是格式良好的XML)吗?或者还有其他方法可以完成我想要做的事情吗?

感谢。

0 个答案:

没有答案