我已经创建了一个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">
...
是否存在不会更改名称空间的函数或声明?
答案 0 :(得分:4)
如果接收应用程序无法处理它,则需要修复它。谁写了它似乎并没有掌握XML的全部内容。修复接收应用程序,或将其扔到它所属的bin中。
答案 1 :(得分:1)
转换后(见下文)命名空间的顺序是 不同。
不,订购完全相同。根据W3C XPath 1.0 Data Model :
元素的属性节点和命名空间节点出现在元素的子节点之前。 命名空间节点定义为在属性节点之前发生。
这意味着虽然在提供的XML片段中,属性xmlns:xsi
似乎位于命名空间声明之前,但实际上它遵循它们。
因此,生成的输出不会更改原始XML文档的名称空间和属性的顺序。
生成一个XML文档,其中属性在命名空间节点之前会违反上面引用的定义,因此兼容的XSLT处理器不会生成这样的文档。