2017-03-15 58 views
0

我正在将用XSLT 2.0编写的文件转换为XSLT 1.0,以便它可以在浏览器中使用。任何人都知道如何使用XSLT 1.0来实现与fn:Qname相同的功能吗?如何在XSLT 1.0中实现fn:QName?

+1

在浏览器中运行XSLT 2.0有许多方法(Saxon-CE,Saxon-JS),这可能比试图在XSLT 1.0中自行部署XSLT和XPath 2.0更简单。 –

+0

@MartinHonnen感谢您的建议。我的印象是,撒克逊解决方案只能读取预编译的SEF文件。是否有可能在不购买萨克森EE许可证的情况下使用它们? –

+0

http://saxonica.com/ce/index.xml是开源的,不需要使用Saxon EE编译样式表。另一方面,Saxon-JS确实需要这一点。但请注意,像oXygen这样的工具带有Saxon EE和编译样式表的能力,因此任何oXygen用户都可以为Saxon-JS创建和编译样式表。 –

回答

0

fn:QName提供的值类型为xs:QName,在XSLT 1.0中没有这样的数据类型,所以不可能有等价函数。您必须首先决定QNames的替代表示形式:例如,您可以使用XPath 3.0表示法“Q {uri} local”作为字符串保存。 (xs:QName类型也包含名称空间前缀,您需要决定是否需要这样做。)

假设您决定使用“Q {uri} local”表示并且不需要该名称空间前缀,然后可以使用诸如concat(),和substring-after()之类的函数直接完成等效的fn:QName