我有一组使用 XSL 转换处理的 XML 文件。它们有一个默认命名空间,所以我的 XSL 转换必须包含以下声明:
xpath-default-namespace="urn:CZ-RVV-IS-VaV-XML-NS:data-1.2.2"
问题是这个值不时变化,我的转换突然停止工作,直到我从新文件中查看一个示例,提取这个命名空间 ID 并将其放入转换中,从而转换停止对旧文件工作。有没有办法将它作为参数传递,或者在运行时以某种方式设置它?我已经尝试过在各种教程中查找的参数语法,但没有一个适用于这种特殊用途。
我搜索了各种论坛,找到了对 XSL 的命名空间无关编码的引用,但不知道如何去做。Ian Williams 的“XSLT 和 Xpath”一书指出,必须声明默认命名空间,否则您在输出流中将一无所获,这对我来说就是这样。但我真的不想定期手动更改它,我想给用户一些可以工作的东西,而不需要我经常关注。
到目前为止,我发明的唯一 100% 可靠的方法是使用标准编程语言将 XML 源和 XSL 转换作为文本文件打开,从 XML 源中提取 URI,将其粘贴到 XSL 转换中,关闭这两个文件并然后,最后运行实际的变换。这行得通,但非常愚蠢,至少在我看来。如何更好地处理更改默认命名空间?
皮特