已经通过StackOverflow和其他网站查看了这个答案。
大多数问题涉及我没有使用的代码,我正在寻找一个简单形式的问题的答案。我想要并回答最基本,最简单的做这种事情的方法。这两个文件没有我在这里发布的了。所有文件,xml,xsl和图像都在同一目录中。
我的XML代码。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="image_experiment.xsl"?>
<root>
<my_content>
<p>IMAGE FOR TESTING XML ONLY</p>
<image>
sizes_1-6.gif
</image>
</my_content>
</root>
我的XSL文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<xsl:template match="image">
<img src="{@image}"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
您的XSLT有两种错误:
image/@image
(属性节点)而不是正确的image/text()
(文本值节点)。 因此,修复你们
<?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/root">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="image">
<img src="{normalize-space(text())}"/> <!-- remove leading and trailing spaces as well -->
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
正如您所看到的,我还在img
- 标记附近添加了最低限度的HTML。
答案 1 :(得分:0)
这是我的最终解决方案,它可以很好地工作 - 除了它打印图像旁边的图像文件的名称。仍在研究如何防止这种情况。
示例XML标记
<image-center>
size_cat_1-6.jpg
</image-center>
<image-left>
size_cat_7-10.gif
</image-left>
<image-right>
size_cat_8-10.gif
</image-right>
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="image-center">
<img src="{.}"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="image-left">
<img src="{.}"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="image-right">
<img src="{.}"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>