在xml+xsl 做的网页中,怎样贴图?(难题)
时间:2004-07-08
来源:互联网
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="template.xsl"?>
<NEWS>
<TITLE>中华人民共和国五笔字型计算机汉字输入技术<br><img src=http://sdfsd></TITLE>
<TYPES>lx</TYPES>
<TIME>Date</TIME>
<CONTENT>H_Memo</CONTENT>
<PRINT>From</PRINT>
<WRITE>Fname</WRITE>
</NEWS>
为什么那段<img src=http://sdfsd>成了代码,却不能成图片呢?这个只能放在xml里面。因为xml是我的数据文件,xsl只是模板。
XML文件里:
<TITLE><![CDATA[中华人民共和国五笔字型计算机汉字输入技术<br><img src=http://sdfsd>]]></TITLE>
xsl这样输出:
<xsl:value-of select="NEWS/TITLE" disable-output-escaping = "yes"/>
这样的话,就呈代码输出,而不是调用图片。
我想,在.xml 中:
<CONTENT>5.jpg</CONTENT>
.xsl 中:
<img>
<xsl:attribute name="src">
<xsl:value-of select="CONTENT"/>
</xsl:attribute>
</img>
这样,一张图片就必须用一个元素。而且不能带别的内容,要不,也会被认为是图片文件名。如果我的文章内容又有文字,又包含图片。该怎么办?
如果内容是:中华人民共和国5.jpg五笔字型计算机汉字输入技术。
会被认为是 <img src=中华人民共和国5.jpg五笔字型计算机汉字输入技术.jpg>
而且一张图片就必须用一个元素,如果我有多张图片。该怎么办?
作者: ahxiaxin 发布时间: 2004-07-08
<script>
<![CDATA[
function 123() {
...........
}
]]>
</script>
这个先不说了,因为我不确定
如果是我就这样
在data.xml中
<51js>
<show>[zd]中华人民共和国[/zd][zhuo]5.jpg[/zhuo][zd]五笔字型计算机汉字输入技术[/zd][zhuo]6.jpg[/zhuo]</show>
</51js>
然后用脚本连接加载xml文件
var show;
function checkDom() {
this.name=navigator.appName.toLowerCase()
this.ver=navigator.appVersion.toLowerCase()
this.opera=(this.name=="opera")?1:0
this.dom=(document.getElementById&&!this.opera)?1:0
this.ie=(document.all)?1:0
this.ie6=(this.dom&&this.ie&&this.ver.indexOf('msie 6'))?1:0
this.ie5=(this.dom&&this.ie&&!this.ie6)?1:0
this.ns4=(document.layers)?1:0
this.ns6=(this.dom&&!this.ie)?1:0
this.ns=(this.ns4||this.ns6)?1:0
this.bw=(this.dom||this.ie||this.ns||this.opera)?1:0
}
bw = new checkDom()
function loadfile() {
if (bw.ie==1) {
show=new ActiveXObject("Microsoft.XMLDOM"); show.async="false"; show.load("data.xml");
}
else {
show = document.implementation.createDocument("", "show", null);
show.addEventListener("load", fileloaded, false);
show.load("data.xml");
}
}
加载完毕后要替换先前xml中的符号[zd][zhuo],其实和UBB是一样的道理
function fileloaded(e) {
var a = show.getElementsByTagName("51js")[0];
var b = a.getElementsByTagName("show")[0].firstChild.data;
var c = b.length;
for(var d=0; d<c; d++) {
b = b.replace("[zd]", "<b>");
b = b.replace("[/zd]", "</b>");
b = b.replace("[zhuo]", "<img src='");
b = b.replace("[/zhuo]", "' border='0'/>");
}
document.write(b);
}
loadfile();
这样就完成了替换
也就是在xsl中加脚本将xml的中符号替换掉
[ 本帖由 zdzhuo 于 2004-7-8 22:33 最后编辑 ]
作者: zdzhuo 发布时间: 2004-07-08
作者: ahxiaxin 发布时间: 2004-07-09
xml只是作为数据源
你的意思是让xml+xsl直接出图文混排的效果吧
xsl我不熟 抱歉 因为现在实在没精力和时间去学
但我感觉把替换的脚本放在xsl文件里能解决这个问题
也许这个对你有用
http://www.suodenjoki.dk/us/prod ... /lyngby_gallery.xml
[ 本帖由 zdzhuo 于 2004-7-9 22:08 最后编辑 ]
作者: zdzhuo 发布时间: 2004-07-09
作者: ahxiaxin 发布时间: 2004-07-12
作者: 单身 发布时间: 2004-07-12
ll.xml
-----------------------------
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="template.xsl"?>
<NEWS>
<CONTENT>
这些是图片前面的文字
<LINK>http://dotnet.aspx.cc/Images/logoSite.gif</LINK>
这些是图片后面的文字
</CONTENT>
</NEWS>
template.xsl
-------------------------------------
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://dotnet.aspx.cc/">
<xsl:template match="/">
<xsl:apply-templates select="NEWS/CONTENT"/>
</xsl:template>
<xsl:template match="NEWS/CONTENT">
<xsl:if test="LINK">
<img>
<xsl:attribute name="src"><xsl:value-of select="LINK"/></xsl:attribute>
</img>
</xsl:if>
<xsl:value-of select="text()"/>
<p></p>
</xsl:template>
</xsl:stylesheet>
作者: ahxiaxin 发布时间: 2004-07-12
----------------------------------
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="2.xsl"?>
<NEWS>
<CONTENT>
中华人民共和国中华人民共和国
这些是图片前面的文字
<LINK>5.gif</LINK>
这些是图片后面的文字
</CONTENT>
</NEWS>
2.xsl
-------------------------------------------
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://dotnet.aspx.cc/">
<xsl:template match="NEWS/CONTENT">
<xsl:for-each select="* | text()">
<xsl:choose>
<xsl:when test="name()='LINK'">
<img>
<xsl:attribute name="src">
<xsl:value-of select="."/>
</xsl:attribute>
</img>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
作者: ahxiaxin 发布时间: 2004-07-12
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28