修改xslt是名称空间不可知的

Jon*_*n W 7 xml xslt xpath xml-namespaces

我有一个我创建的XSLT来处理特定的xml文档.但是,现在名称空间正在某些文档中引入,但并非所有文档都引入了名称空间.我想对这些文档使用相同的XSLT,但是我无法将样式表修改为名称空间无关.

之前曾建议修改我的xpath *[local-name()="ElementName"],但考虑到我们已经制作了样式表,这是非常耗费人力的.

另外,我知道我可以设置xpath-default-namespace到特定的命名空间,但如前所述,我不能简单地将其设置为#all或可能的命名空间列表.我正在寻找更有效的解决方案,并且可以使用Saxon处理器的扩展功能.有任何想法吗?谢谢.

Dir*_*mar 3

您是否考虑过预处理 XML 文档?

您可以删除所有名称空间(注意可能的冲突),然后使用现有的 XSL 转换对其进行处理。

这种方法的优点是您根本不必修改 XSLT。它保持可读性(*[local-name()='frob'] 看起来很糟糕)和可维护性。