Xslt 提交时使用xforms从数据库获取和显示数据

Xslt 提交时使用xforms从数据库获取和显示数据,xslt,xforms,orbeon,Xslt,Xforms,Orbeon,我有一个包含xml文档的数据库,我想在xforms页面上显示一个转换后的xml,当提交发送时,我使用的是orbeon表单 我的解决方案是,在提交时,servlet从数据库获取xml,将其写入文件,xslt在何时以及如何进行转换时转换xml树,但我不知道如何在xforms页面上显示此文件。也许中的replace=instance属性可以有所帮助,但我不知道如何做 谢谢 现在,在亚历山德罗的建议下,我尝试使用这个xpl的东西,但它不起作用。 在模型中: <xforms:insert nodes

我有一个包含xml文档的数据库,我想在xforms页面上显示一个转换后的xml,当提交发送时,我使用的是orbeon表单

我的解决方案是,在提交时,servlet从数据库获取xml,将其写入文件,xslt在何时以及如何进行转换时转换xml树,但我不知道如何在xforms页面上显示此文件。也许中的replace=instance属性可以有所帮助,但我不知道如何做

谢谢

现在,在亚历山德罗的建议下,我尝试使用这个xpl的东西,但它不起作用。 在模型中:

<xforms:insert nodeset="instance('inst2')"
origin="xxforms:call-xpl('oxf:/resources/pipeline.xpl', 'data', 
instance('inst1'), 'data')"/>    
在pipeline.xpl中:

<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
      xmlns:oxf="http://www.orbeon.com/oxf/processors">

<p:param type="input" name="data"/>
<p:param type="output" name="data"/>

<p:processor name="oxf:xslt">
    <p:input name="data" href="#data"/>
    <p:input name="config" href="transform.xsl"/>
    <p:output name="data" ref="data"/>
</p:processor>

我要转换的实例是投诉实例,转换后的实例名为trf instance,pipeline.xpl文件与我的xforms页面位于同一目录中。我的StyleSheet名为customerToOperator.xsl。我的代码出了什么问题

我刚刚注意到,注意:如果使用单独的部署,服务和XSLT转换必须出现在Orbeon WAR文件中,而不是应用程序中。 嗯。。。我应该把这些文件放在哪里

我的应用程序详细信息:

一个xforms页面,包含两个实例:

<instance id='inst1'>
<name>
   <lastname/>
   <firstname/>
</name>  
</instance>

<instance id='inst2'>
<fname>
   <fullname/>
</fname>
</instance>
我有两个输入字段,分别引用name/lastname和name/firstname。 我有一个上面描述的xforms:insert节点和一个xforms:submission节点:

<xforms:submission 
id="save-submission" 
ref="instance('inst2')"
action="/my-servlet"
method="post"
replace="none">
我在orbeon/WEB-INF/resources中添加了两个文件,即pipeline.xpl,如上所述和transform.xsl:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
          <fname>
              <fullname>
                 <xsl:value-of select="name/firstname"/>
                 <xsl:value-of select="name/lastname"/>
              </fullname>
          </fname>
</xsl:template>
</xsl:stylesheet>
我有一个servlet,它在控制台上写发布的实例,现在它在控制台上写inst2,但是没有用户输入数据,只有节点

A真的需要解决这个问题


再次感谢

要从关系数据库中获取XML或不从关系数据库中获取XML并应用转换,而不是编写自己的servlet,我将使用,并通过页面流将此管道映射到URL。现在您有了一个响应HTTP请求并返回XML的服务。要从XForms调用服务,可以使用。您最终在一个实例中得到了XML,并且可以使用以下内容显示它:


在包括单独部署在内的所有情况下,管道和XSLT文件都必须位于资源中。通常,这意味着Orbeon WEB应用程序的WEB-INF/资源。但是,您也可以通过设置Orbeon,使其同时使用磁盘上的其他目录,来做更多有趣的事情。

我觉得您的代码中的所有内容都是正确的。我添加了一些关于管道和XSLT应该去哪里的更多细节。如果你能把它们放在Orbeon的web应用程序web-INF/resources中,那么你应该都很好。它不起作用:/我在问题中详细描述了我的应用程序。。。我肯定,我失踪了something@Anvar,这可能只是一个路径问题:当您使用oxf:/scheme时,Orbeon Forms会在所谓的资源中查找文件。资源可以存储在许多地方,包括WEB-INF/Resources。因此,如果您有一个文件WEB-INF/resources/pipeline.xpl,那么您希望将其引用为oxf:/pipeline.xpl,而不是oxf:/resources/pipeline.xpl。另外,当某些东西不能按照您想要的方式工作时,请查看orbeon.log。在很多情况下,你会发现事情在那里不起作用的原因。我希望这有帮助@avernet好吧,现在我把一切都记录下来了。如果我在日志中搜索pipeline.xpl或inst2,怎么可能什么也找不到呢?应该是的,不是吗?即使我在pipeline.xpl中输入语法错误,它也不会记录任何单词。。。。我将url更改为oxf:/pipeline.xpl…@Anvar,当你说它不工作时,你在web浏览器中有错误吗?如果没有,您在orbeon.log中是否有异常?在异常开始时,它是否说明了有助于解决问题的内容?如果没有,我需要在这里复制它,以便能够进一步提供帮助,对于这一点,我需要一个包含最简单的可复制测试用例的包。