2016-06-09 6 views
0

ich eine xquery haben, wo eine Instanz definiert:Fabrikat xf: Ausgabe eines klickbaren Link

<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> 

:

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

Später ich diese Instanz durch die Vorlage und Abrufen von Informationen aus einem anderen xquery ‚ersetzen‘ Die zurückgegebene "Tabellen" -Instanz sieht folgendermaßen aus:

<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> 

Dann versuche ich, eine Tabelle zu erstellen, indem ich Werte referenziere diese zurück Beispiel:

<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> 

Das Problem ist, dass die letzte Spalte ein klickbaren Link werden soll und ich habe nicht einen Weg, es zu tun finden.

ich versuchte, durch die Angabe seiner Art, die eine Filelink-Element in ‚Tisch‘ weise eine URL zu machen:

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

dies macht aber nur Wert in der ersten Reihe der Tabelle ein Link. In allen folgenden Aufzeichnungen bleibt diese Spalte ein Ebenentext.

Ich würde lieber eine einfache href verwenden (Sie können es kommentiert sehen), aber ich weiß nicht, wie man einen Wert von fileLink-Element erhalten?

Das funktioniert nicht, weil Dateinamen in die Zeichenfolge nicht verkettet ist (ich glaube es nicht gefunden wird):

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

und dies nicht funktioniert (was offensichtlich ist, aber ich versuchte noch)

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

In beiden möglichen Lösung Ich weiß nicht: Wie kann ich auf FileLink-Element in reinem HTML verweisen, um es mit href arbeiten zu lassen, wenn ich mich entscheide, es zu verwenden (vorzuziehen für mich Lösung)? Wie kann ich nicht nur das erste Vorkommen des Feldes auf einen anklickbaren Link setzen, sondern auch den nächsten, wenn ich xf: output und xf: bind anstelle von href verwende?

Vielen Dank.

Antwort

1

Dies löste das Problem:

   <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>