如何从java代码传递参数到XSLT

时间:2014-01-03 15:52:49

标签: java xslt xslt-2.0

我想从java应用程序中为indent属性传递参数,如下所示。

我可以毫无问题地从java代码传递它,但在xslt中定义参数是一个问题。 我做了以下示例:

<xsl:param select="'yes'">

<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="{$indent}" />

但是当我使用上面的内容时,我收到的错误是说我定义属性缩进的方式无效。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

<xsl:param name="indent" select="'yes'"/>的参数声明是正确的,但并非所有元素的所有属性都允许使用属性值模板。如果我们查看http://www.w3.org/TR/xslt20/#serialization,那么我们会看到这些属性不允许使用属性值模板,否则语法会说例如indent={yes|no}

如果要在Java代码中定义缩进,请检查XSLT处理器的API,它可能有一种设置输出序列化设置的方法。

根据您的评论,您使用的是IBM的Websphere XSLT 2.0 API,我没有使用该API的经验,因此以下是尝试阅读API在线文档以建议使用您的自定义序列化的可能方法设置:

XOutputParameters params = yourXSLTExecutableInstance.getOutputParameters();
params.setIndent(true);

List<XItemView> result = yourXSLTExecutableInstance.executeToList(yourJAXPInputSource);
result.get(0).exportItem(yourJAXPStreamResult, params);

这大致是我想尝试的,我没有任何API可供测试。