xsl样式解析时全局变量的用法

来源:互联网 发布:王力宏唱功知乎 编辑:程序博客网 时间:2024/06/10 17:01

 1.首先记住 variable这个变量在xsl中只得赋值一次,以后不得再改变了..呵呵.这样怎么称得变量了,不知道draft的专家们是吃什么饭的.

2.所谓全局,因为xsl:variable元素是xsl:stylesheet的子无素,所以在stylesheet 中定义的变量可以在整个实例空间中引用.
<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:param name="viewtype" select="'view'"/>
 <xsl:variable name="URLVariable">
 <xsl:choose>
  <xsl:when test="contains($viewtype,'edit')">  
    <xsl:text>/flowEngine/page1.wml</xsl:text>
  </xsl:when>
   <xsl:when test="contains($viewtype,'view')">  
   <xsl:text>/flowEngine/page2.wml</xsl:text>
  </xsl:when>
   <xsl:otherwise>
   <xsl:text>/flowEngine/error.wml</xsl:text>   
   </xsl:otherwise>
 </xsl:choose>
</xsl:variable>
<xsl:template match="/data">
 <xsl:value-of select ="$URLVariable"/>
 <a href="{$URLVariable}"  > myURL</a>
 ...........在实例空间中都有效
</xsl:template>
</xsl:stylesheet >
3.引用方法
 1.$vairableName的方法
  对于<xsl:value-of select ="$vairableName"/>之类以node对象为值的元素,请使用之.
  但<xsl:text>$hyperURLVariable</xsl:text>是无效的.
 2.{$vairableName}的方法
  对于一些以非node对象为值的引用,请使用{$vairableName},两边的大括号不能少.
  如 <a href="{$hyperURLVariable}"  > myURL</a>
  但<xsl:text>{$hyperURLVariable}</xsl:text>也是无效的.
4.全局变量的错误使用方法
 定义的全局变量
 <xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
 <xsl:param name="viewtype" select="'view'"/>
  <xsl:variable name="URLVariable"/> <!---在这里定义一个空值--> 
  <xsl:template match="/data">
  <xsl:choose>
   <xsl:variable  name="URLVariable">
    <xsl:when test="contains($viewtype,'edit')">  
     <xsl:text>/flowEngine/page1.wml</xsl:text>
    </xsl:when>
   </xsl:variable>
   <xsl:variable  name="URLVariable">
    <xsl:when test="contains($viewtype,'view')">  
     <xsl:text>/flowEngine/page2.wml</xsl:text>
    </xsl:when>
   </xsl:variable>
   <xsl:variable  name="URLVariable">
     <xsl:otherwise>
     <xsl:text>/flowEngine/error.wml</xsl:text>   
     </xsl:otherwise>
    </xsl:variable>
    <!---一般人会认为这是全局变量赋值,错了,其实是在一个更小的代码空间了重新定义一个局部变量)
  </xsl:choose>  
  <xsl:value-of select ="$URLVariable"/>   <
  <a href="{$URLVariable}"  > myURL</a>
  <!----上面的全局变量的值仍是空的,你根本不然引用到xsl:choose中的URLVariable的值,这个错误
  ,浪费我三个小时去获得它---->
  ...........全局变量在整个实例空间中都有效,只是我们没有正确赋值.
 </xsl:template>
 </xsl:stylesheet >

 希望看了这些,对你有些帮助!


附上一个例子:

XML:

xmlStr=xmlStr.replace("<root","<?xml-stylesheet type=\"text/xsl\" href=\"/portal/dataExchange/xsl/"+type+".xsl\"?>\n<root id=\""+id+"\" valid=\""+String.valueOf(valid)+"\"");

<?xml version="1.0"?><root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema" date="2014-05-14" type="greataSend"><Datas><BasicData><drSwtype>0</drSwtype><drSwid>11-11-18</drSwid><drSwdate>2014-05-14</drSwdate><drSwunit id="10094">十一号线南段项目公司</drSwunit><drFiledate>2011-11-18</drFiledate><drSecretClass>普通</drSecretClass><drNum>1</drNum><drTitle>永久接水工程施工单位方式的请示</drTitle><drBlMode>网上流转</drBlMode><modelId>收文流程</modelId><removed>0</removed><operatetime>2014-05-14</operatetime><chiefDep>12040401</chiefDep><ordinartyDep>信息管理中心</ordinartyDep><chiefPerson>120404</chiefPerson><ordinartyPerson>上海申通地铁集团有限公司</ordinartyPerson><remark>主送:申通集团内容:永久接水工程施工单位方式的请示(后附附件)</remark><flag>0</flag><priorities>普件</priorities></BasicData><AttachFileList><AttachFile><removed>0</removed><id>0</id><fileExtName>doc</fileExtName><fileSize>0</fileSize><version>1</version><fileName>永久接水工程施工单位方式的请示</fileName><path>http://greataweb.shmtr.com/files/16/29648/A/永久接水工程施工单位方式的请示.doc</path></AttachFile></AttachFileList></Datas></root>

xsl

<?xml version="1.0" encoding="utf-8"?>  <!-- Edited with XML Spy v2007 (http://www.altova.com) --><xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  <xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes' />  <xsl:template match="/">  <xsl:variable name="recValid" select="root/@valid"/>  <html lang="en"><head> <meta http-equiv="X-UA-Compatible" content="IE=edge" charset="utf-8"  /><title>上海申通地铁集团有限公司收文处理单</title><link rel="stylesheet" href="css/formalize.css" /><link rel="stylesheet" href="css/page.css" /><link rel="stylesheet" href="css/default/imgs.css" /><link rel="stylesheet" href="css/reset.css" />    <link type="text/css" href="css/flick/jquery-ui-1.8.18.custom.css" rel="stylesheet" />    <!--[if IE 6.0]>           <script src="js/iepng.js" type="text/javascript"></script>           <script type="text/javascript">                EvPNG.fix('div, ul, ol, img, li, input, span, a, h1, h2, h3, h4, h5, h6, p, dl, dt');           </script>       <![endif]--><script src="/portal/js/html5.js"></script><script src="/portal/js/jquery-1.7.1.js"></script><script src="/portal/js/jquery-ui-1.8.18.custom.min.js"></script><script src="/portal/js/jquery.formalize.js"></script>  <script type="text/javascript" src="js/common.js"></script>  </head><body class="Flow"><div class="f_bg_fw">    <div class="w850">      <div class="logo_2"></div>    </div>      <div class="gray_bg">          <!--Panel_6-->          <div class="Divab1">          <!--1st-->            <div class="panel_6">              <div class="divT">                <div class="mb10 icon icon_1"></div>                <div class="more_4"><a href="#" title="更多">更多</a></div>              </div>              <div class="divH">                <div class="divB">                  <h5 class="clearfix">业务办理</h5>                  <div class="con">                    <ul class="button clearfix">                                       <xsl:if test="root[@valid='1']">                    <li id="ywbl"><a href="javascript:ywbl('{$recValid}');" class="ywbl">业务办理</a></li>                    </xsl:if>  <li><a href="#" target="blank" class="print">打印</a></li>                      <li><a href="#" class="jk">业务监控</a></li>                      <li><a href="#" class="tips">小提示</a></li>                      <li><a href="#" class="imp">公文导入</a></li>                      <li><a href="#" class="exp">公文导出</a></li>                    </ul>                  </div>                </div>                <div class="divF"></div>              </div>            </div>            <!--1st End-->                    </div>      <!--Divab1 End-->         <form action="http://10.1.44.18/docRe/registerRe.action" id="formAdd" name="formAdd" method="post" target="theOldUrl">          <input type="hidden" name="typeId"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/ChiefPerson"/></xsl:attribute></input>       <input type="hidden" name="header"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/ordinartyPerson"/></xsl:attribute></input>       <input type="hidden" name="drSwtype"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/chiefDep"/></xsl:attribute></input>       <input type="hidden" name="attachFj" value=""/>                       <div class="gray_bg2">              <div class="w_bg">                  <div>                      <div class="Top_fw">                          <h1 class="t_c">上海申通地铁集团有限公司<br></br>收文单</h1>                                                        <div class="mb10 Step clearfix">                              <ul class="clearfix">                                  <li class="fst on">                                      <dl>                                          <dt></dt>                                            <dd>登记阶段</dd>                                         </dl>                                     </li>                                  <li >                                      <dl>                                          <dt></dt>                                            <dd>拟办阶段</dd>                                         </dl>                                    </li>                                  <li>                                      <dl>                                          <dt></dt>                                            <dd>批办阶段</dd>                                         </dl>                                    </li>                                  <li>                                      <dl>                                          <dt></dt>                                            <dd>跟踪阶段</dd>                                         </dl>                                    </li>                                  <li class="fin">                                      <dl>                                          <dt></dt>                                            <dd>办结阶段</dd>                                         </dl>                                    </li>                                                                                                      </ul>                            </div>                            <div class="mb10">                               <table width="100%" border="0" cellspacing="0" cellpadding="0" class="table_4">                                  <thead>                                  <th colspan="4">                                      <h5 class="fl">收文编号:</h5><span class="fl"><xsl:value-of select="root/Datas/BasicData/drSwid"/></span>                                        <span class="fr clearfix">                                          <h6 class="fl">密级:</h6><span class="fl mr8">                                          <xsl:value-of select="root/Datas/BasicData/drSecretClass"/></span>                                          <h6 class="fl">缓急:</h6><span class="fl mr8">                                          <xsl:value-of select="root/Datas/BasicData/priorities"/></span>                                        </span>                                    </th>                                  </thead>                                  <tr>                                    <td class="lableTd" width="15%">来文单位</td>                                    <td width="35%"><input name="drSwunit" type="text" size="42"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/drSwunit"/></xsl:attribute></input></td>                                    <td class="lableTd" width="15%">文件日期</td>                                    <td ><input name="drFiledate" type="text" size="42"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/drFiledate"/></xsl:attribute></input></td>                                  </tr>                                  <tr>                                  <td class="lableTd" width="15%">份数</td>                                  <td ><input name="drNum" type="text" size="42"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/drNum"/></xsl:attribute></input></td>                                  <td class="lableTd" width="15%">文件字号</td>                                  <td >                                      <input name="drFilezh" type="text" size="42"><xsl:attribute name="value"><xsl:value-of select="root/Datas/BasicData/drFilezh"/></xsl:attribute></input>                                  </td>                                </tr>                                <tr>                                  <td class="lableTd" width="15%">文件标题</td>                                  <td colspan='3'><textarea name="drTitle"><xsl:value-of select="root/Datas/BasicData/drTitle"/></textarea></td>                                                                  </tr>                                <tr>                                 <td class="lableTd" width="15%">文件内容</td>                                  <td colspan='3'>                                                                      <table width="100%" cellpadding="2" cellspacing="0" style="font-size:12px;border-top:#bbb 1px solid;border-right:#bbb 1px solid">                                      <xsl:if test="root/Datas/AttachFileList/AttachFile/fileName ">                                      <!--  附件属性名-->                                      <tr>                                      <td align='center' nowrap="nowrap" width='40%'>                                        <font><b>文件名</b> </font>                                      </td>                                      <td align='center' nowrap="nowrap" width='5%'>                                        <font><b>大小</b> </font>                                      </td>                                      <td align='center' nowrap="nowrap" width='20%'>                                        <font><b>上传时间</b> </font>                                      </td>                                      <td align='center' nowrap="nowrap" width='5%'>                                        <font><b>上传人</b> </font>                                      </td>                                      <td align='center' nowrap="nowrap" width='10%'>                                        <font><b>版本</b> </font>                                      </td>                                      <td align='center' nowrap="nowrap" width='15%'>                                        <font><b>备注</b> </font>                                      </td>                                      </tr>                                      <xsl:for-each select="root/Datas/AttachFileList/AttachFile">                                                        <tr>                                            <td style="line-height: 15px">                                              <xsl:variable name="AttachFilePath"                                              select="path" />                                              <input type="hidden" name="filePath" value="{$AttachFilePath}"/>                           <input type="hidden" name="fileName"><xsl:attribute name="value"><xsl:value-of select="fileName"/></xsl:attribute></input>                                              <input type="hidden" name="fileExtName" ><xsl:attribute name="value"><xsl:value-of select="fileExtName"/></xsl:attribute></input>                                                                                            <input type="hidden" name="fileSize"><xsl:attribute name="value"><xsl:value-of select="fileSize"/></xsl:attribute></input>                                              <input type="hidden" name="version" ><xsl:attribute name="value"><xsl:value-of select="version"/></xsl:attribute></input>                                              <input type="hidden" name="memo" ><xsl:attribute name="value"><xsl:value-of select="memo"/></xsl:attribute></input>                                              <!--img src="/workflowNew/images/files/doc.gif" style="display: inline;" /-->                                              <a href="{$AttachFilePath}" target="_blank"                                                style="display: inline;">                                                <xsl:value-of select="fileName"/>                                                                                                .                                                                                                <xsl:value-of select="fileExtName"/></a>                                                                                          </td>                                            <td style="line-height: 15px;">                                              <xsl:value-of select="fileSize"/> K</td>                                            <td style="line-height: 15px"><xsl:value-of select="uploadDate"/> </td>                                            <td style="line-height: 15px"><xsl:value-of select="uploader"/> </td>                                                                                                                                    <td style="line-height: 15px">                                              v<xsl:value-of select="version"/></td>                                                                                                                                    <td style="word-break: break-all">                                              <xsl:value-of select="memo"/>                                            </td>                                          </tr>                                                                                     </xsl:for-each>                                     </xsl:if>                                    </table>                                  </td>                                                                  </tr>                              <!-- </table>                                                            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="table_4"> -->                                <tr>                                  <td class="lableTd" width="15%">备注</td>                                  <td colspan="3">                                    <textarea name="remark"><xsl:value-of select="root/Datas/BasicData/remark"/></textarea>                                  </td>                                </tr>                                <tr>                                  <th colspan="4"><h5 class="fl">收文意见栏</h5></th>                                </tr>                                <!-- 拟办意见 -->                                <tr>                                  <td colspan="4">                                    <div class="node">                                    <b class="fl">拟办意见</b>                                    <div class="clear"></div>                                    <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='拟办人']">                                          <xsl:sort select="upddate" order="descending"/>                                      <div class="con">                                        <i><xsl:value-of select="dept"/></i>                                        <p><xsl:value-of select="remark"/></p>                                        <div class="p8 clearfix">                                          <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                          <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                          <!--<div class="fr mr5">运管中心</div>-->                                        </div>                                      </div>                                      </xsl:for-each>                                      </div>                                      <!-- node end -->                                      <div class="node">                                        <b class="fl">领导批示</b>                                        <div class="clear"></div>                                        <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='领导'                                          or stepname='批示领导']">                                              <xsl:sort select="upddate" order="descending"/>                                          <div class="con">                                            <i><xsl:value-of select="dept"/></i>                                            <p><xsl:value-of select="remark"/></p>                                            <div class="p8 clearfix">                                              <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                              <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                              <!--<div class="fr mr5">运管中心</div>-->                                            </div>                                          </div>                                          </xsl:for-each>                                      </div>                                      <div class="node">                                        <b class="fl">部门意见</b>                                        <div class="clear"></div>                                        <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='部门业务人员处理'                                          or stepname='部门领导审核'                                          or stepname='部门接受人工作分发']">                                              <xsl:sort select="upddate" order="descending"/>                                          <div class="con">                                            <i><xsl:value-of select="dept"/></i>                                            <p><xsl:value-of select="remark"/></p>                                            <div class="p8 clearfix">                                              <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                              <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                              <!--<div class="fr mr5">运管中心</div>-->                                            </div>                                          </div>                                          </xsl:for-each>                                      </div>                                      <div class="node">                                        <b class="fl">办结人意见</b>                                        <div class="clear"></div>                                        <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='办结']">                                              <xsl:sort select="upddate" order="descending"/>                                          <div class="con">                                            <i><xsl:value-of select="dept"/></i>                                            <p><xsl:value-of select="remark"/></p>                                            <div class="p8 clearfix">                                              <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                              <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                              <!--<div class="fr mr5">运管中心</div>-->                                            </div>                                          </div>                                          </xsl:for-each>                                      </div>                                      <div class="node">                                        <b class="fl">备案情况</b>                                        <div class="clear"></div>                                        <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='备案']">                                              <xsl:sort select="upddate" order="descending"/>                                          <div class="con">                                            <i><xsl:value-of select="dept"/></i>                                            <p><xsl:value-of select="remark"/></p>                                            <div class="p8 clearfix">                                              <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                              <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                              <!--<div class="fr mr5">运管中心</div>-->                                            </div>                                          </div>                                          </xsl:for-each>                                      </div>                                       <div class="node">                                        <b class="fl">办理结果</b>                                        <div class="clear"></div>                                        <xsl:for-each select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='办结']">                                              <xsl:sort select="upddate" order="descending"/>                                          <div class="con">                                            <i><xsl:value-of select="dept"/></i>                                            <p><xsl:value-of select="remark"/></p>                                            <div class="p8 clearfix">                                              <div class="fr mr5"><xsl:value-of select="upddateStr"/>-07-15</div>                                              <div class="fr mr5"><xsl:value-of select="userfullname"/></div>                                              <!--<div class="fr mr5">运管中心</div>-->                                            </div>                                          </div>                                          </xsl:for-each>                                      </div>                                  </td>                                </tr>                                <!-- 拟办end -->                                <!-- <tr>                                  <td class="lableTd" width="15%">拟办意见</td>                                  <xsl:for-each select="">                                    <td colspan="3"><xsl:value-of select="root/Datas/BasicData/sendReportW"/></td>                                  </xsl:for-each>                                                                  </tr> -->                                <!-- <tr>                                  <td class="lableTd" width="15%" >领导批示</td>                                  <td colspan="3"><xsl:value-of select="root/Datas/BasicData/sendReportW"/></td>                                </tr>                                                               <tr>                                  <td class="lableTd" width="15%" >部门意见</td>                                  <td colspan="3"><xsl:value-of select="root/Datas/BasicData/sendReportW"/></td>                                </tr>                                                                                                                                                               </table>                                                            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="table_4">                                <tr>                                  <td class="lableTd" width="15%">办结人意见</td>                                  <td ><xsl:value-of select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='办结']/remark"/></td>                                </tr>                                <tr>                                  <td class="lableTd" width="15%">备案情况</td>                                  <td ><xsl:value-of select="root/Datas/TApprovedinfoList/TApprovedinfo[stepname='备案']/remark"/></td>                                </tr> -->                               <!--  <tr>                                                                            <i class="i-red"><xsl:value-of select="dept"/></i>                                        <div class="p8"><xsl:value-of select="remark"/></div>                                        <div class="p8 clearfix">                                          <div class="fr mr5"><xsl:value-of select="upddateStr"/></div>                                          <div class="fr mr5">                                            <xsl:value-of select="userfullname"/>                                          </div>                                                                                  </div>                                      </div>                                        </xsl:for-each>                                    </td>                               </tr> -->                              </table>                          </div>                          <div class="mb10 t_c">                          <!-- input type="submit" value="初审通过" />                                                           <input type="button" value="返 回" />                          <input type="reset" value="取 消" / -->                          </div>                            <div class="footer"></div>                        </div>                    </div>                </div>            </div>       </form>        <form action="confirmValid.action" id="recUpdate" name="recUpdate" method="post" target="theUpdateUrl">          <input type="hidden" name="id"><xsl:attribute name="value"><xsl:value-of select="root/@id"/></xsl:attribute></input>         </form>       <iframe name="theOldUrl" style="display: none;"></iframe>        <iframe name="theUpdateUrl" style="display: none;"></iframe>      </div>           </div></body></html>     <!--html结束 --></xsl:template></xsl:stylesheet>


0 0