Xml Orbeon XPL-SQL处理器、HTTP序列化程序和;名称空间前缀
我正在尝试创建一个管道,它从数据库中获取一个BLOB,并通过浏览器将其作为二进制文件传递给用户,使用SQL处理器为HTTP序列化程序提供数据。我在Orbeon 4.4上。以下是我的page-flow.xml:Xml Orbeon XPL-SQL处理器、HTTP序列化程序和;名称空间前缀,xml,orbeon,Xml,Orbeon,我正在尝试创建一个管道,它从数据库中获取一个BLOB,并通过浏览器将其作为二进制文件传递给用户,使用SQL处理器为HTTP序列化程序提供数据。我在Orbeon 4.4上。以下是我的page-flow.xml: <controller xmlns="http://www.orbeon.com/oxf/controller"> <page path="/dl/" model="file-get.xpl"/> <epilogue url="oxf:/con
<controller xmlns="http://www.orbeon.com/oxf/controller">
<page path="/dl/" model="file-get.xpl"/>
<epilogue url="oxf:/config/epilogue.xpl"/>
</controller>
下面是file-get.xpl:
<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
xmlns:sql="http://orbeon.org/oxf/xml/sql"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oxf="http://www.orbeon.com/oxf/processors"
xmlns:xi="http://www.w3.org/2001/XInclude">
<p:processor name="oxf:sql">
<p:input name="datasource" href="/config/datasource-sql.xml"/>
<p:input name="config">
<sql:config>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:base64Binary">
<sql:connection>
<sql:execute>
<sql:query>
select blob_col from blob_table where rownum = 1
</sql:query>
<sql:result-set>
<sql:row-iterator>
<sql:get-column-value column="blob_col"/>
</sql:row-iterator>
</sql:result-set>
</sql:execute>
</sql:connection>
</document>
</sql:config>
</p:input>
<p:output name="data" id="image-data"/>
</p:processor>
<p:processor name="oxf:http-serializer">
<p:input name="config">
<config>
<content-type>image/jpeg</content-type>
<force-content-type>true</force-content-type>
</config>
</p:input>
<p:input name="data" href="#image-data"/>
</p:processor>
</p:config>
从rownum=1的blob_表中选择blob_列
图像/jpeg
真的
通过这种配置,我得到了xsi:type:xs中未声明的前缀
我错过什么了吗?这是我第一次尝试深入研究xpl。谢谢 因此,我有一个解决方法来完成这项工作(但是,我仍然很好奇为什么SQL处理器不能正确输出必要的属性)。解决方案是让SQL处理器创建没有属性的
标记,然后通过XSLT处理器发送该标记,使用样式表添加属性。
新的.xpl文件:
<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
xmlns:sql="http://orbeon.org/oxf/xml/sql"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oxf="http://www.orbeon.com/oxf/processors"
xmlns:xi="http://www.w3.org/2001/XInclude">
<p:processor name="oxf:sql">
<p:input name="datasource" href="/config/datasource-sql.xml"/>
<p:input name="config">
<sql:config>
<document>
<sql:connection>
<sql:execute>
<sql:query>
select blob_col from blob_table where rownum = 1
</sql:query>
<sql:result-set>
<sql:row-iterator>
<sql:get-column-value column="blob_col"/>
</sql:row-iterator>
</sql:result-set>
</sql:execute>
</sql:connection>
</document>
</sql:config>
</p:input>
<p:output name="data" id="sql-data"/>
</p:processor>
<p:processor name="oxf:xslt">
<p:input name="config">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="document">
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:base64Binary">
<xsl:apply-templates/>
</document>
</xsl:template>
</xsl:stylesheet>
</p:input>
<p:input name="data" href="#sql-data"/>
<p:output name="data" id="image-data"/>
</p:processor>
<p:processor name="oxf:http-serializer">
<p:input name="config">
<config>
<content-type>image/jpeg</content-type>
<force-content-type>true</force-content-type>
</config>
</p:input>
<p:input name="data" href="#image-data"/>
</p:processor>
</p:config>
从rownum=1的blob_表中选择blob_列
图像/jpeg
真的
xsi:type=“xs:base64Binary”@spojam-我也这么认为,所以我试图修复它是将xmlns:xs=”“添加到标记中……没有运气在名称空间中有更多的名称,xmime,请参阅:1.2要求glad如果你能做到这一点,我不会猜到在转换中指示类型