我想使用xslt转换xml,但重要的变量来自请求。 我有这样的xquery:
let $transform := doc("projekt.xsl")
let $serialization-options := 'method=xml media-type=text/xml omit-xml-declaration=yes indent=no'
let $params :=
<parameters>
<param name="output.omit-xml-declaration" value="yes"/>
<param name="output.indent" value="yes"/>
<param name="output.media-type" value="text/html"/>
<param name="output.method" value="xhtml"/>
<param name="param.name" value="topicid" />
<param name="param.select" value="{$topid}"/>
</parameters>
return
transform:transform($doc, $transform, $params, $serialization-options)
文件project.xsl在这里:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="topicid"/>
<xsl:template match="/">
<xsl:value-of select="$topicid"/>
<xsl:apply-templates select="discussflow/message[@topic=$topicid]"/>
</xsl:template>
<xsl:template name="msg" match="//message">
..........
</xsl:template>
我想将添加属性'select'添加到:
<xsl:param name="topicid"/>
在xquery中指定$ topid值。
我在这里看过类似的东西:http://www.techrepublic.com/article/pass-parameters-to-xsl-templates-programmatically/1044596 但在xquery中它不想工作。
我使用的是db 1.4.1
修改
transform:transform来自http://exist-db.org/xquery/transform namespace
官方文档在这里:https://en.wikibooks.org/wiki/XQuery/XQuery_and_XSLT
答案 0 :(得分:1)
在您需要使用的xslt doc中:
<xsl:param name="param.select" select="default value" />
<xsl:param name="output.omit-xml-declaration" select="default value""/>
<xsl:param name="output.indent" select="default value"/>
<xsl:param name="output.media-type" select="default value"/>
<xsl:param name="output.method" select="default value"/>
<xsl:param name="param.name" select="default value" />
<xsl:param name="param.select" select="default value"/>
也就是说,参数的名称必须等于xquery中定义的名称。如果没有这样的参数,您可以使用select输入默认值(或者在没有请求的情况下运行xslt,例如用于测试目的......)
答案 1 :(得分:0)
我不熟悉这个API,但我不知道你从哪里得到这个想法:
<param name="param.name" value="topicid" />
<param name="param.select" value="{$topid}"/>
我对文档的阅读是,如果样式表有一个名为topicid的参数,那么我希望查询能够传递类似
的内容。<param name="topicid" value="{$topid}"/>