2017-03-09 43 views
0

我想使用XSLT從XML檢索img源,但圖像源的元素在子元素中,這使我無法檢索值。我試圖用屬性模板,但它似乎仍不能工作從XML中的子元素的xslt值獲取img src

// XML 
<recipeImgPath> 
    <imgPath>images/upload/thumbnail_1488881669_mango-avocado-salsa-recipeThumb.png</imgPath> 
    <imgPath>images/upload/slider_1488881669_mango-avocado-salsa-slider.png</imgPath> 
    <imgPath>images/upload/featured_1488881669_mango-avocado-salsa-featuredRecipe.png</imgPath> 
    <imgPath>images/upload/background_1488881669_mango-avocado-salsa-recipeBackground.png</imgPath> 
</recipeImgPath> 

// part of my XSLT code which need to get the source of image 
<a href="recipe-page-1.php"> 
<img src="{imgPath}" alt=""/> 
<div class="hover-cover"></div> 
<div class="hover-icon">View Recipe</div> 
</a> 
+0

你可以多展示一下你的XSLT嗎?特別是,當您創建'img'標籤時,您目前定位的是哪個節點? –

回答

1

我沒有看到你的XSLT,但你可以嘗試以下樣式:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes"/> 
    <xsl:template match="/"> 
     <output> 
      <xsl:apply-templates/> 
     </output> 
    </xsl:template> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="imgPath"> 
     <a href="recipe-page-1.php"> 
      <img src="{.}" alt=""/> 
      <div class="hover-cover"/> 
      <div class="hover-icon">View Recipe</div> 
     </a> 
    </xsl:template> 
</xsl:transform> 

哪個產生以下輸出:

<output> 
    <recipeImgPath> 
     <a href="recipe-page-1.php"> 
      <img src="images/upload/thumbnail_1488881669_mango-avocado-salsa-recipeThumb.png" alt=""/> 
      <div class="hover-cover"/> 
      <div class="hover-icon">View Recipe</div> 
     </a> 
     <a href="recipe-page-1.php"> 
      <img src="images/upload/slider_1488881669_mango-avocado-salsa-slider.png" alt=""/> 
      <div class="hover-cover"/> 
      <div class="hover-icon">View Recipe</div> 
     </a> 
     <a href="recipe-page-1.php"> 
      <img src="images/upload/featured_1488881669_mango-avocado-salsa-featuredRecipe.png" alt=""/> 
      <div class="hover-cover"/> 
      <div class="hover-icon">View Recipe</div> 
     </a> 
     <a href="recipe-page-1.php"> 
      <img src="images/upload/background_1488881669_mango-avocado-salsa-recipeBackground.png" alt=""/> 
      <div class="hover-cover"/> 
      <div class="hover-icon">View Recipe</div> 
     </a> 
    </recipeImgPath> 
</output> 
0

爲簡單地把imgPath元素文本到相應的href屬性的另一種簡單的方法是

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="recipeImgPath/imgPath"> 
    <a href="recipe-page-1.php"> 
    <img src="{text()}" alt=""/> 
    <div class="hover-cover"></div> 
    <div class="hover-icon">View Recipe</div> 
    </a> 
</xsl:template> 

</xsl:stylesheet> 

添加身份模板根據需要(或在對方的回答)來複制其他元素。