Apache cocoon 在Apache Cocoon 2.2中生成XML进行处理时如何读取flowscript值
我有一个简单的flowscript函数,可以实现这一点:Apache cocoon 在Apache Cocoon 2.2中生成XML进行处理时如何读取flowscript值,apache-cocoon,Apache Cocoon,我有一个简单的flowscript函数,可以实现这一点: cocoon.sendPage("page/index", { username : "SomeName" } ); 在my sitemap.xmap中,我有以下配置: <map:pipeline internal-only="true"> <map:match pattern="page/*"> <map:generate src="xml/{1}.xml"/>
cocoon.sendPage("page/index",
{
username : "SomeName"
}
);
在my sitemap.xmap中,我有以下配置:
<map:pipeline internal-only="true">
<map:match pattern="page/*">
<map:generate src="xml/{1}.xml"/>
<map:transform src="xslt/html.xslt"/>
<map:serialize type="html"/>
</map:match>
</map:pipeline>
我在html.xslt文件中使用xsl:stylesheet从page.xml-file读取值。它简单而直接(并按预期工作)
但是:我想读取page.xml-file中的flowscript值(此处为用户名),以便将其传递到html.xslt-file。这可以通过jx:template完成吗?(我发现的示例使用了该方法,但在Apache Cocoon 2.2中,仅在早期版本中效果不佳。)如果不是jx:template的解决方案:还有什么?要从flowscript读取值,可以使用jx模板生成器。但与Cocoon 2.1和早期版本不同,您不应该在站点地图的map:generator部分中明确引用org.apache.Cocoon.generation.JXTemplateGenerator 以下是解决方案(使用ApacheCook 2.2和Maven 3.0.4),供将来参考: 1) 确保pom.xml与cocoon template impl有依赖关系(JXTemplateGenerator已移到此处) 3) 在sitemap.xmap中:生成XML文件时,确保它们具有type=“jx”
4) 在.jx.xml文件中:读取如下值
<?xml version="1.0" encoding="UTF-8"?>
<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
<valuesFromFlowscript>
<!-- Select values from flowscript -->
<username>${username}</username>
</valuesFromFlowscript>
</jx:template>
<xsl:value-of select="valuesFromFlowscript/username"/>
${username}
5) 在.xslt文件中,您可以像这样读取生成的值
<?xml version="1.0" encoding="UTF-8"?>
<jx:template xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
<valuesFromFlowscript>
<!-- Select values from flowscript -->
<username>${username}</username>
</valuesFromFlowscript>
</jx:template>
<xsl:value-of select="valuesFromFlowscript/username"/>
<xsl:value-of select="valuesFromFlowscript/username"/>