make xf:输出一个可点击的链接

时间:2016-06-09 11:28:38

标签: html xquery xforms exist-db

我有一个xquery,其中定义了一个实例:

    <xf:instance id="table" xmlns="">
        <results>
            <result>
                <interfaceName></interfaceName>
                <reportDate></reportDate>
                <testResult></testResult>
                <fileLink></fileLink>
                <fileName></fileName>
            </result>
        </results>
    </xf:instance>

稍后我会更换&#39;此实例通过提交和检索来自另一个xquery的信息:

<xf:submission id="showTable"
                        method="post" 
                        replace="instance"
                        ref="instance('table')"
                        instance="table">
                <xf:resource value="concat('/exist/rest/db/xquery/returnTable.xq?interface=',instance('defaultInstance')//InterfaceName,'&amp;','date=',instance('defaultInstance')//CalendarDate)"/>        
            </xf:submission>

退回&#39;表&#39;实例看起来像:

<results>
<result>
<interfaceName>test1</interfaceName>
<reportDate>2016-06-01</reportDate>
<testResult>failure</testResult>
<fileLink>http://localhost:8080/exist/rest/db/junitReports/Report2.xml</fileLink>
<fileName>/db/junitReports/Report2.xml</fileName>
</result>
<result>
<interfaceName>test2</interfaceName>
<reportDate>2016-06-01</reportDate>
<testResult>success</testResult>
<fileLink>http://localhost:8080/exist/rest/db/junitReports/Report1.xml</fileLink>
<fileName>/db/junitReports/Report1.xml</fileName>
</result>
</results>

然后我试图通过引用此返回实例中的值来构建表:

<tbody xf:repeat-nodeset="instance('table')//result">
                   <tr>
                        <td>
                            <xf:output ref="interfaceName"></xf:output>   
                        </td>
                        <td>
                            <xf:output ref="reportDate"></xf:output> 
                        </td>
                        <td>
                            <xf:output ref="testResult"></xf:output>  
                        </td>
                        <td>
                            <li>
                                <!-- <a href="{concat(request:get-scheme(), "://", request:get-server-name(),":", '8080', '/exist/rest', fileLink )}">Link</a> -->
                                <xf:output ref="fileLink"></xf:output>
                            </li>
                        </td>
                    </tr>
                </tbody>

问题是最后一列应该成为可点击的链接,我找不到办法。

我尝试在&#39; table&#39;中创建一个fileLink元素。通过指定其类型实例化URL:

<xf:bind nodeset="instance('table')//result/fileLink" type="anyURI"></xf:bind>

但这只会使表格的第一行中的值成为一个链接。在所有下一个记录中,此列仍为平面文本。

我宁愿使用一个简单的href(你可以在那里注释掉它),但我不知道如何从fileLink元素中获取值?

这不起作用,因为fileName没有连接到字符串(我认为没有找到):

<a href="{concat(request:get-scheme(), "://", request:get-server-name(),":", '8080', '/exist/rest', fileName)}">Link</a>

这不起作用(这很明显,但我还是试过)

<a href="fileLink">Link</a>

在两种可能的解决方案中我都不知道:如果我决定使用它(如果我更喜欢使用解决方案),我如何在纯HTML中引用fileLink元素以使其与href一起使用?如何使用xf:output和xf:bind而不是href,我怎么能不仅使第一次出现的字段成为可点击的链接,而且所有下一个链接也是如此?

谢谢。

1 个答案:

答案 0 :(得分:1)

这解决了这个问题:

                <td>
                    <xf:trigger appearance="minimal">
                        <xf:label>File link</xf:label>
                        <xf:action ev:event="DOMActivate">
                            <xf:load show="new">
                                <xf:resource value="fileLink"/>
                            </xf:load>
                        </xf:action>
                    </xf:trigger>
                </td>