使用XML和XSLT显示图像

时间:2017-02-07 12:13:43

标签: c# xml xslt

我的XML如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>    
<chapter id="ch01">
    <sect1>
        <title>Wattage</title>
        <para>Paragraph1</para>
        <para>Paragraph2</para>
        <para><figure>
                <caption>
                    <para>
                    <i>Sample image caption</i></para>
                </caption>
                <img src="myimagepath\cover_front.jpg"/>
            </figure>
        </para>
    </sect1>
</chapter>

我在使用XSLT(通过C#aspx页面)呈现XML的HTML页面上显示图像时遇到问题。

我的XSLT如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html> 
            <body>
                <h2>My Book</h2>
                <xsl:apply-templates select="chapter/sect1" />
            </body>
        </html>
    </xsl:template>
    <xsl:template match="chapter/sect1">
        <xsl:apply-templates select="title" />
        <xsl:apply-templates select="para/figure" />
        <br />
    </xsl:template>
    <xsl:template match="title">
        <b><span style="font-size=22px;">
                <xsl:value-of select="." />
            </span>
        </b>
        <br />
    </xsl:template>
    <xsl:template match="para/figure">
        <xsl:element name="img">
            <xsl:attribute name="src">
                <xsl:value-of select="." />
            </xsl:attribute>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

我的图像没有使用上面的XSLT显示。谁能请帮忙。我是XSLT的新手。

1 个答案:

答案 0 :(得分:1)

你渲染para / figure的重点并不是你所想的那样,你选择的地点&#34;。&#34;因为图像源实际上应该渲染所有:

<caption><para><i>Sample image caption</i></para></caption>
<img src="myimagepath\cover_front.jpg"/>

尝试更改此模板:至:

<xsl:template match="para/figure">
    <img src="{img/@src}" />
</xsl:template>

(那是在记忆中工作)所以:

  • para / figure有两个子元素标题和img
  • 所以我们要输出一个标签&#34; img&#34; (名称是偶然的)带有属性&#34; src&#34; (再次附带)我们希望src成为当前节点的img元素的src属性(@ == attribute)。花括号使魔术能够将值放入您要渲染的标记中。