XSLT 使用命名空间呈现 XML 而不是

XSLT to render XMLs with namespace and not

我的问题与此类似question。除了我想要一个样式表来呈现(XML 到 PDF)XML 是否包含命名空间。

因为我的一些外部系统生成 XML 没有命名空间,而一些有命名空间,并且两者具有相似的结构。是否可以容纳一个样式表来满足两种 XMLs 的需要?如果可能怎么办?

感谢您的回答。

在 XSLT 2.0 中,您可以使用星号作为命名空间的通配符,例如<xsl:template match="*:foo">分别<xsl:value-of select="*:bar"/>。在 XSLT 1.0 中,您可以使用联合运算符,例如<xsl:template match="foo | df:foo"><xsl:value-of select="bar | df:bar"/>,只要单个输入包含命名空间或非命名空间元素,它就会起作用。

作为替代方案,您可以编写一个转换步骤来执行预处理以添加您期望的命名空间或删除它,然后使用第二个转换步骤将规范化的 XML 转换为 PDF。