document的使用?

想做一个两个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> \------------------------&gt;这里有问题,当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因为如果不这么写的话&amp;符号是不符合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>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus