2016-07-25 74 views
1

我正在通過XSL將一些XML轉換爲HTML,並且在顯示鏈接時遇到了一些麻煩。該XML看起來是這樣的:顯示XML到HTML的鏈接XSL轉換

<c02 level="file"> 
    <did> 
     <container type="Box">1</container> 
     <container type="Folder">2</container> 
     <unittitle>Folder A, </unittitle> 
     <unitdate>2001</unitdate> 
     <daogrp> 
      <daoloc label="Image" href="www.test.com" role="Image/jpeg"> 
       <daodesc><p>Document</p>  
       </daodesc> 
      </daoloc> 
     </daogrp>   
    </did> 
    <scopecontent> 
     <p>1 page</p> 
    </scopecontent> 
</c02> 

我預期的HTML是這樣的:

<tr> 
        <td valign="top">1</td> 
        <td valign="top">2</td> 
        <td valign="top" colspan="10">Folder A, 2001</td> 
       </tr> 
       <tr> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td valign="top" colspan="8"><a href="www.test.com">Document<br /> 
        </a></td> 

和我的XSL目前看起來是這樣的:

<xsl:template match="daoloc"> 
    <xsl:choose> 
     <xsl:when test="@role='Image/jpeg'"> 
      <img src="{@href}" altrender="{@Document}"/> 
     </xsl:when> 
     <xsl:when test="@role='new'"> 
      <a href="{@href}"> 
       <xsl:value-of select="@Document"/> 
      </a> 
     </xsl:when> 
    </xsl:choose> 
</xsl:template> 

我周圍玩了雖然收效甚微。我該如何扭轉XSL才能顯示這些鏈接?感謝您提前提供任何幫助。

+2

請出示的預期效果轉型。 - P.S.您的輸入 - 至少是您向我們展示的部分 - 沒有名爲「dao」的元素 - 所以您的模板從不應用,並且不會影響輸出。 –

+0

預期的結果是超鏈接,顯示爲指向href鏈接的「數字對象」。我試過將更改爲模板中的,並且@ show ='new'to @ role =「image/jpeg」,無濟於事。 – Paul

+0

「*預期結果是一個超鏈接,顯示爲」數字對象「,指向href鏈接。*」根本不清楚。請編輯您的問題,並將**精確**期望結果**作爲代碼**發佈。 –

回答

0

好了,下面的模板:

<xsl:template match="daoloc"> 
    <p> 
     <a href="{@href}"> 
      <xsl:apply-templates/> 
     </a> 
    </p> 
</xsl:template> 

應用到你的輸入(!加入labelhref屬性之間的空間)後,將返回:

<p> 
    <a href="www.test.com">Document</a> 
</p> 
+0

謝謝,但鏈接似乎並未生成。 – Paul

+0

看到它在這裏工作:http://xsltransform.net/3NSSEuu你得到不同的結果?用相同的輸入? –

+0

我明白了。它獨立工作,但是當與我的XML的其餘部分結合時沒有任何反應。我將在問題的上下文中更新XML。 – Paul