我在将图像调用到已转换的xsl文件时出现问题。
这似乎很简单,但我无法找到解决方案。我已经尝试在这里搜索并使用提供的各种类似答案,但没有运气。
我正在尝试使用
中的字符串<image>string</image>
作为显示我的图形的文件路径。
我尝试过的任何结果都会给我一个小小的图形图标。
提前致谢。
编辑:我会更具体。 (对不起,这是漫长的一天)我正在使用Notepad ++,使用“XML Tools”插件,当我专注于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>
答案 0 :(得分: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,我能够指定图像路径网址,然后将图像元素字符串作为文件名来完成完整路径。
答案 1 :(得分: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
属性正确包含原始xml中每个<image>
标记的图像路径。
如果你希望你的输出是xhtml而不是普通的html(因此标签正确地终止为xml),如果你使用XSL 1.0或“xhtml”,你可以将输出方法更改为“xml”你正在使用XSL 2.0。