我正在开展一个迁移项目,其中weblogic将从weblogic 8迁移到10.x
我的应用程序使用xquery,当升级到更高版本时,我可以看到在转换的xml中创建了一些自闭关标签,而8.1的情况则不然。
例如: 我已经给出了一个简单的声明,如下所示
let $a := <find an attribute value>
return
<abc:value>{$a}</abc:value>
如果“查找属性值”返回null,则在weblogic 8中,节点不会在转换后的xml中发送,但在weblogic10.x中,它将解析节点为自关闭节点,如<abc:value/>
这是迁移问题吗?我知道xquery升级到2004年,我确实照顾了那部分。 10次标签:weblogic10_3,xmlquery,xquery
答案 0 :(得分:1)
似乎没有任何问题。
所有空标签都可以由自闭标签替换。从XML解析器的角度来看,它们完全相同。它是依赖于实现的 表示它选择的空标记,<abc:value/>
或<abc:value></abc:value>
。此行为可能会在发行版之间发生变化。
空元素标签可用于任何没有内容的元素
可能有一个选项来指定空标记的编码,但任何XML解析器都必须同时处理两个版本。
答案 1 :(得分:1)
如果您的旧代码不接受正确的XML,那么正确的答案就是修复旧代码。这两种形式在语义上是相同的,如果代码不接受它不处理XML,无论它声称什么。
如果您无法修复它,我建议您编写一个单独的阶段,将XML文件作为文本处理,找到您不喜欢的空元素表单,并将其替换为您执行的操作。 。警告:正确地做这件事并不容易;你必须处理CDATA部分逃逸等等。您最好的选择可能是开始使用正确编写的开源XML序列化程序(例如Apache代码中的序列化程序),并修改它处理空元素的方式。