2017-03-09 87 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> 

添加身份模板根据需要(或在对方的回答)来复制其他元素。