Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Orbeon XPL-SQL处理器、HTTP序列化程序和;名称空间前缀_Xml_Orbeon - Fatal编程技术网

Xml Orbeon XPL-SQL处理器、HTTP序列化程序和;名称空间前缀

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

我正在尝试创建一个管道,它从数据库中获取一个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:/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如果你能做到这一点,我不会猜到在转换中指示类型