【问题标题】:Displaying an image in XSLT在 XSLT 中显示图像
【发布时间】:2017-05-26 14:26:06
【问题描述】:

我想在 XSLT 中的某个表格单元格中嵌入图像,但似乎无法正常工作。

我已经尝试了一些我在这里找到的东西,但都没有奏效。我不知道如何选择图像,通过 DTD 中的实体嵌入并通过 XSLT 在浏览器中显示。

输入 XML:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE games [
<!ELEMENT games (name, charcteristics)>
<!ELEMENT game (name, gameNumber)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT gameNumber EMPTY>
<!ELEMENT gameCover (#PCDATA)>
<!ELEMENT characteristics (genre*,studio*,year*,review*)>
<!ELEMENT genre (#PCDATA)>
<!ELEMENT studio (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT review (#PCDATA)>
<!ATTLIST gameNumber gameID ID #REQUIRED>
<!ATTLIST genre gameNum1 IDREF #REQUIRED>
<!ATTLIST genre type (action|RPG|FPS|Puzzle) "action">
<!ATTLIST studio gameNum2 IDREF #REQUIRED>
<!ATTLIST studio studName (EA|Ubisoft|Gameloft|Bethesda) "EA">
<!ATTLIST gameCover picture ENTITY #IMPLIED>
<!ATTLIST gameCover format NOTATION (jpg|gif) #IMPLIED>
<!ENTITY FCp SYSTEM "upload.wikimedia.org/wikipedia/en/1/18/Far_Cry_Primal_cover_art.jpg" NDATA jpg>
<!NOTATION jpg PUBLIC "jpg viewer">
<!NOTATION gif PUBLIC "gif viewer"> ]>

<games>
    <game>
        <name>FarCry:Primal</name>
        <gameNumber gameID="qJCGc" />
        <gameCover picture="FCp" format="jpg"></gameCover>
        <year>2016</year>
        <review>lololo</review>
    </game>

    <characteristics>
        <genre gameNum1="qJCGc" type="FPS"></genre>
        <studio gameNum2="qJCGc" studName="Ubisoft"></studio>
    </characteristics>
</games>

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="/">
        <h1>
            <font face="" color="#EAC67A">XML Каталог за видеоигри</font>
        </h1>
        <table>
            <tr>
                <td>
                    <!-- Image should be here -->
                </td>
            </tr>
        </table>
    </xsl:template>
</xsl:stylesheet>

我是 XML 和 XSLT 的新手,请帮助我。

【问题讨论】:

  • XML 中的什么决定了图像的名称?是gameCover元素的图片属性吗?

标签: xml image entity xslt-1.0 embed


【解决方案1】:

它不是普遍支持的(在 IE、Chrome 和 Safari 中为我工作,但不是 Firefox),但您可以使用 unparsed-entity-uri() 获取实体的 URI:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="//game">
        <h1>
            <font face="" color="#EAC67A">XML Каталог за видеоигри</font>
        </h1>
        <table>
            <tr>
                <td>
                    <img src="{unparsed-entity-uri(gameCover/@picture)}"/>
                </td>
            </tr>
        </table>
    </xsl:template>
</xsl:stylesheet>

但是...我注意到源文档中存在一些问题。 URL 格式不正确(无方案),DTD 有错误(characteristics 的拼写不一致,game 元素不完整等)。

这可能会给您带来一些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多