有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    带有<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进行测试的权限