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>それを必要としない場所で使用していて、あなたがする1つの場所でそれを使用することに失敗しています。

ここでは、あなたが何を求めているのかを完全に伝えるには十分ではありませんが、これであなたを近づけることができます。

<?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>

これにより、元のxmlの各タグからの画像パスを適切に含む属性を持つ一連のhtml<img>タグが生成されます。src<image>

出力をプレーンhtmlではなくxhtmlにしたい場合(したがって、タグをxmlとして適切に終了させたい場合)、XSL 1.0を使用している場合はoutput-methodを「xml」に、使用している場合は「xhtml」に変更できます。 XSL2.0を使用します。

于 2012-11-02T02:10:52.087 に答える