2017-07-14 20 views
0

已經通過StackOverflow和其他網站查看此答案。基本:使用XML和XSLT顯示圖像

大多數問題涉及我沒有使用的代碼,我正在尋找一個簡單形式的問題的答案。我想要回答最基本的,最基本的,做這種事情的方法。這兩個文件沒有比我在這裏發佈的更多。所有文件,xml,xsl和圖像都在同一個目錄中。

我的XML代碼。

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="image_experiment.xsl"?> 

<root> 
    <my_content> 

     <p>IMAGE FOR TESTING XML ONLY</p> 
     <image> 
      sizes_1-6.gif 
     </image> 

    </my_content> 
</root> 

我的XSL文件

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="root"> 

    <xsl:template match="image"> 
     <img src="{@image}"/> 
     <xsl:apply-templates/> 
    </xsl:template> 


    </xsl:template> 
</xsl:stylesheet> 
+0

那麼什麼是你的問題,以顯示實際圖像的XSLT? – stuartd

回答

1

你的XSLT是在兩個方面錯誤:

  • 嵌套模板被禁止
  • 你的XPath表達式不匹配你想要的節點,因爲 您選擇image/@image(屬性節點)而不是正確的image/text()(text-value-nod E)。

所以固定兩個你會得到

<?xml version = "1.0" encoding = "UTF-8"?> 
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/root">  
    <html> 
    <body> 
     <xsl:apply-templates/> 
    </body> 
    </html> 
</xsl:template> 

<xsl:template match="image"> 
    <img src="{normalize-space(text())}"/>  <!-- remove leading and trailing spaces as well --> 
    <xsl:apply-templates/> 
</xsl:template> 

</xsl:stylesheet> 

正如你可以看到我還添加了一個最小的HTML圍繞img - 標籤。

+0

雖然這很好,但它不完全是我想要的。它確實讓我的形象展現出來,並且讓我有信心繼續學習和指導下去。我瞭解到,我需要了解更多關於xslt的信息,例如以及一些可以使用的參數。 –

0

這是我的最終解決方案,它很好地工作 - 除了它在圖像旁邊打印圖像文件的名稱。仍在研究如何防止這種情況。

示例XML標籤

<image-center> 
    size_cat_1-6.jpg 
</image-center> 

<image-left> 
    size_cat_7-10.gif 
</image-left> 

<image-right> 
    size_cat_8-10.gif 
</image-right> 

在瀏覽器

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 


<xsl:template match="image-center"> 
    <img src="{.}"/> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="image-left"> 
    <img src="{.}"/> 
    <xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="image-right"> 
    <img src="{.}"/> 
    <xsl:apply-templates/> 
</xsl:template> 

</xsl:stylesheet>