2

我创建了一个 XSLT 样式表文档。在此文档中,我创建了一个新的 XML 文档,如下所述:

...
<CREATE_REQ
            xsi:schemaLocation="http://fcubs.ofss.com/service/aServices theService.xsd"
            xmlns="http://fcubs.ofss.com/service/aServices"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...

转换后(见下文),命名空间的顺序不同。一个普通的 XML 解析器可以处理这个问题,这通常是没有问题的。我的问题是接收应用程序无法处理这个问题,并且命名空间的顺序可能也不应该改变。

<CREATE_REQ xmlns="http://fcubs.ofss.com/service/aServices"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://fcubs.ofss.com/service/aServices theService.xsd">

...

是否有不会更改命名空间的函数或声明?

4

2 回答 2

4

如果接收应用程序无法处理它,则需要对其进行修复。编写它的人似乎没有掌握 XML 的全部内容。修复接收应用程序,或将其扔到它所属的 bin 中。

于 2013-03-05T08:24:45.500 回答
1

转换后(见下文),命名空间的顺序不同。

不,顺序完全相同。根据 W3C XPath 1.0 数据模型

元素的属性节点和命名空间节点出现在元素的子元素之前。命名空间节点被定义为出现在属性节点之前

这意味着虽然在提供的 XML 片段中,属性xmlns:xsi 似乎在命名空间声明之前,但实际上它在它们之后。

因此,生成的输出不会更改原始 XML 文档的名称空间和属性的顺序。

生成属性位于名称空间节点之前的 XML 文档将违反上面引用的定义,因此兼容的 XSLT 处理器不会生成这样的文档

于 2013-03-05T03:53:45.437 回答