2

我在将图像调用到转换后的 xsl 文件时遇到问题。

这似乎很简单,但我找不到解决方案。我已经尝试在这里搜索并使用提供的各种类似答案,但没有运气。

我正在尝试使用里面的字符串

<image>string</image>

作为显示我的图形的文件路径。

我尝试过的任何结果总是给我一个破碎的小图形图标。

提前致谢。

编辑:我会更具体。(抱歉,这一天太长了)

我正在使用带有“XML 工具”插件的 Notepad++,当我专注于 XML 文件时,我可以通过指定 xsl 文件来应用 XSL 转换。我将它保存为新创建的 html 文件。

打开它应该显示我所有的数据+图像。但是,当无法找到图形时,我会得到占位符。(即在 Internet Explorer 中,它是带有红十字的小图标。)

在文件开头使用样式表方法调用还应该允许我查看转换,而无需使用 Firefox 创建任何新文件。但它也无法显示。

这是我的 XML:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet href="aperture_event_page.xsl" type="text/xsl"?>
    <listings
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="aperture_venues.xsd">

        <venue id="apv_01">
            <image>/images/apv_01.png</image>
            <other elements></other elements>
            ...
            <more elements>
                <elements></elements>
                ...
            </more elements>
        </venue>

        <venue id="apv_02">
            #repeat#
        </venue>

        <venue id="apv_03">
            #repeat#
        </venue>

        <venue id="apv_04">
            #repeat#
        </venue>
    </listings/>

和我的 XSL:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" omit-xml-declaration="yes"/>

    <xsl:template match="/">
        <xsl:element name="html">
            <xsl:element name="head">
                <xsl:element name="title">Event</xsl:element>
            </xsl:element>

            <xsl:element name="body">
                <xsl:element name="image">
                    <img src="{image}"/>
                </xsl:element>
                <xsl:apply-templates select="/listings/venue/image"/>
            </xsl:element>
        </xsl:element>
    </xsl:template>
4

2 回答 2

2
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" omit-xml-declaration="yes"/>
    <xsl:template match="/">
    <xsl:element name="html">
    <xsl:element name="head">
    <xsl:element name="title">Event: Concert</xsl:element>
    </xsl:element>
    <xsl:element name="body">
    <xsl:apply-templates select="/listings/venue/event[@id='eve_01']"/>
    </xsl:element>
    </xsl:element>
    </xsl:template>
    <xsl:template match="event">
    <xsl:element name="img">
    <xsl:attribute name="src">
    <xsl:text>
    http://url to image path/xml/task2/event_page
    </xsl:text>
    <xsl:value-of select="../image/text()"/>
    </xsl:attribute>
    </xsl:element>
    </xsl:template>
    </xsl:stylesheet>

使用 xsl:text,我能够指定图像路径 url,然后将图像元素字符串作为文件名来完成完整路径。

于 2012-12-03T12:25:11.633 回答
1

您在<xsl:element>不需要它的地方使用它,并且没有在您需要的地方使用它。

这里还不足以完全告诉我你在追求什么,但这应该让你更接近:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" omit-xml-declaration="yes"/>

    <xsl:template match="/">
        <html>
            <head>
                <title>Event</title>
            </head>

            <body>
                <xsl:apply-templates select="/listings/venue/image"/>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="image">
        <xsl:element name="img">
            <xsl:attribute name="src">
                <xsl:value-of select="." />
            </xsl:attribute>
        </xsl:element>
    </xsl:template>

 </xsl:stylesheet>

这将生成一系列 html<img>标签,其src属性正确包含<image>原始 xml 中每个标签的图像路径。

如果您希望输出为 xhtml 而不是纯 html(因此标签正确终止为 xml),如果您使用 XSL 1.0,则可以将输出方法更改为“xml”,如果您使用的是“xhtml”使用 XSL 2.0。

于 2012-11-02T02:10:52.087 回答