带锚标记XML和XSLT的图像

时间:2013-07-09 10:44:12

标签: xml xslt

我需要创建一个包含在锚点标记中的图像,其中xml和xslt将显示在iframe中

我的XML看起来像

<cars>
  <car>
    <name>Ferrari</name>
    <image>http://www.bestdrives.org/ferrari-cars/ferrari-fiorano.jpg</image>
    <link>http://www.ferrari.com/English/Pages/home.aspx</link>
  </car>
</cars>

我需要将名称和图像包装在锚标记中

我的xslt看起来像

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <xsl:for-each select="cars/car">
      <xsl:template match="car">
        <xsl:attribute name="href" select="link"/>
        <xsl:value-of select="name"/>
        <img>
  </html>              <xsl:attribute name="src" select="image"/>
        </img>
      </xsl:template>
    </xsl:for-each>
  </body>

2 个答案:

答案 0 :(得分:0)

这样的事情? XSLT:

    <xsl:template match="car">
        <a>
            <xsl:attribute name="href" select="link"/>
            <xsl:value-of select="name"/>
            <img>
                <xsl:attribute name="src" select="image"/>
            </img>
        </a>
    </xsl:template>

答案 1 :(得分:0)

您提供的XSLT格式不正确(由于某种原因,结束</html>标记已在<img>元素内部结束,<?xml声明必须是文件中的第一个事物,前面没有前导空格)。它也不是有效的XSLT - 您不能在template中放置for-each,并且在XSLT 1.0中不能在select上使用<xsl:attribute>(尽管您可以在XSLT 2.0)。怎么样:

<?xml version="1.0" encoding="ISO-8859-1"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <xsl:for-each select="cars/car">
      <a href="{link}">
        <xsl:value-of select="name"/>
        <img src="{image}" />
      </a>
    </xsl:for-each>
  </body>
</html>

href="{link}"符号称为attribute value template,它是<xsl:attribute name="href"><xsl:value-of select="link" /></xsl:attribute>

的简洁版本