想做一个两个XML的关联查询,可是当document指定的xml文件不存在的时候会报错,有没有什么办法在xsl里判断此xml文件是否存在,或者加错误陷阱跳过,这个有点像数据库里的外连接
---------------------------------------------------------------
try:
1<xsl:variable name="myFileName">csdn00210.xml</xsl:variable>
1<xsl:variable name="myFile" select="document($myFileName)"></xsl:variable>
先用个变量,再document
---------------------------------------------------------------
能具体说明一下吗?
跳过
if(document.XMLDocument.xml != "")
//执行
这样??
有代码吗?
---------------------------------------------------------------
1<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
2<xsl:template match="/">
3<html>
4<head>
5<base target="_self"/>
6<script language="vbscript" src="blogxmldom.vbs"></script>
7<script language="vbscript" src="calendar.vbs"></script>
8<script language="vbscript" src="xmldom.vbs"></script>
9<script language="vbscript" src="fsooperation.vbs"></script>
10<script language="vbscript" src="main.vbs"></script>
11<style>
12.calendarcss{font-family:"Arial";
13font-size:12px;
14color:#000000;
15}
16</style>
17</head>
18<body onload="init()">
19<span id="blogname"></span>
20<table class="calendarcss" id="calendartable">
21<tr>
22<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>
23</tr>
24<tr>
25<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
26</tr>
27<tr>
28<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
29</tr>
30<tr>
31<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
32</tr>
33<tr>
34<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
35</tr>
36<tr>
37<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
38</tr>
39<tr>
40<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
41</tr>
42</table>
43<xsl:apply-templates select="blogrecent"></xsl:apply-templates>
44</body>
45</html>
46</xsl:template>
47<xsl:template match="blogrecent">
48<xsl:for-each select="blog">
49<div>
50<xsl:value-of select="@time"></xsl:value-of>
51title:
52<xsl:value-of select="blogname"></xsl:value-of>
53<a href="http://www.google.com">google</a>
54</div>
55</xsl:for-each>
56</xsl:template>
57</xsl:stylesheet>
---------------------------------------------------------------
1<xsl:variable name="t" select="document(concat(@id,'.xml'))//content"></xsl:variable>
------------------------>这里有问题,当concat(@id,'.xml')表示的xml不存在时会报错
1<xsl:stylesheet version="1.1" xmlns:js="javascript:code" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2<xsl:script implements-prefix="js" language="javascript">
3</xsl:script>
4
5这个是方法一的解决
6
7<xsl:variable name="t" select="document(concat(@id,'.xml'))//content"></xsl:variable> \------------------------>这里有问题,当concat(@id,'.xml')表示的xml不存在时会报错
8
9方法二 插入例如<div>的html元素
10
11在前面跟我一样用script脚本
12用transform去解析xml文件并返回html文本用innerHTML插入
13
14方法三 用xmlhttp插入
15
16呵呵,反正方法多多了,随便你选择了
17
18效率是第一种最高,不过不大好写,我基本上不用这种方法,不得以而为之的
19
20能用xsl解决的,最好不要用脚本:)~``
21
22后来我寻找到了三种解决办法,其中第一种是无意中看到了你刚才给的网址,然后查书的,后来有想到了
23
24第三种办法,然后写了个xmlhttp的类,不过这个在本地的机器是实在是不好,有点儿大材小用了,最后
25
26是想到了xmldom的方法,呵呵*^_^*
27
28然后我总结了一下,根据原理出发想了想应该是第一种方法的效率最高,因为,我发现xslt是这么个执
29
30行的方法,先检查语法规则,之所以我写成了<script src="xx.vbs"></script>那个是有原因的
31
32因为如果不这么写的话&符号是不符合xml标准的,所以我求求你(啊不对了,被听的歌带跑了,脸红一
33
34下),根据这个原理,再分析如果初始化的话就是先解析了xslt的script,这样一上来就执行了,而且是
35
36比较全的,不会出现了脚本错误这种现象(我始终认为客户端js是不太稳定的),然后才是你加载
37
38的xmldom的对象操作,而且多创建一个对象的话,显然效率是差一些的,所以综上所述我得出了第一种
39
40效率最高,在二,三种的效率来看,我觉得是第二种效率高一些
41
42打了一大堆废话,呵呵,其实都是逻辑推论的,不一定符合真实情况,这个要做测试的*^_^*
43
44XSLT程序员参考手册(第二版)一书的363页是讲document的其中364页最后一段这什么写的:
45
46函数document()的输入参数URI必须能够唯一(原书这里有错别字)标识一个XML文档.如果该URI不合
47
48法,或者它不标识任何资源,或者标识的资源不是一个XML文档,XSLT规范就让实现者来决定应如何处
49
50理:可以报错,也可以返回一空节点集.</div></xsl:stylesheet>