使用 XSLT 将命名空间和 schemaLocation 添加到特定节点

Add namespace and schemaLocation to specific nodes using XSLT

我有这个输入 xml:

<root>
<someElement>
    <otherNode>blabla</otherNode>
</someElement>
</root>

我想要这个输出 xml:

<root xmlns="http://www.blabla.com/foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<someElement xmlns="http://www.blabla.com/foo"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.blabla.com/foo/some.xsd">
    <otherNode>blabla</otherNode>
</someElement>
</root>

我可以在一个 XSLT 中完成吗?还是需要两个步骤才能完成?我获得了将命名空间放在根节点上,但我无法放置辅助节点的属性。

提前致谢。

塞尔吉奥

所需输出中 someElement 元素上的两个命名空间声明是多余的,因为它们已经存在于 root 元素上。无法强制 XSLT 处理器输出冗余名称空间声明。