以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  将XML解析成一棵树,显示在页面中,非常着急。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=58758)


--  作者:wtoxiao
--  发布时间:2/4/2008 10:40:00 AM

--  将XML解析成一棵树,显示在页面中,非常着急。
以下是用于解析xml的xsl,可以将xml显示成一棵树。有一个问题始终解决不了,非常着急,想请教大家。
我想在显示的节点上加一个联接,提交到服务器的一个jsp,参数是当前节点的名字(见xsl红色黑体部分),不知道该怎么写?   。

感谢各位高人。


<?xml   version="1.0"   encoding="utf-8"?>
<xsl:stylesheet   version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output   method="html"   indent="no"   encoding="utf-8"   />
  <!--HTML   Template-->
  <xsl:template   match="/">
    <html   version="1.1"   xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>
          <xsl:value-of   select="comment()"   />
        </title>
        <style   type="text/css">
.xml
{
  font-family:   Tahoma;
  font-size:   9pt;
  color:   blue;
}
.xml   div
{
  margin-left:   16px;
}
.xmlAttribute
{
  color:   red;
}
.xmlComment
{
  color:   green;
}
.xmlName
{
  color:   maroon;
}
.xmlPI
{
  color:   gray;
}
.xmlText
{
  color:   black;
}
        </style>

<script   type="text/javascript">
function   collapse(a)   {
  var   div   =   a.nextSibling.nextSibling.nextSibling;
  if(div.style.display   ==   "")   {
  
    div.style.display   =   "none";
    a.src   =   "images/Lplus.png";
    
  }   else   {
    div.style.display   =   "";
    a.src   =   "images/Lminus.png";
  }
}

function   DoClick(b){   
alert("999");
alert(document.nodeName.value);
        opener.Refresh();   
        CloseMe();   
        window.focus();   
}   

</script>

</head>
      <body   class="xml">
        <span   class="xmlPI"> <img   src="images/sm_star.gif"   border="0"   /> &lt;ROOT&gt; </span>
        <br   />
        <xsl:apply-templates   />
      </body>
    </html>
  </xsl:template>
  
  
  <!--Attribute   Template-->
  <xsl:template   match="@*">
    <xsl:text>   </xsl:text>
    <span   class="xmlAttribute">
      <xsl:value-of   select="name()"   />
    </span>
    <xsl:text> =" </xsl:text>
    <span   class="xmlText">
      <xsl:value-of   select="."   />
    </span>
    <xsl:text> " </xsl:text>
  </xsl:template>
  
  <!--Processing   Instruction   Template-->
  <xsl:template   match="processing-instruction()">
    <span   class="xmlPI">
      <xsl:text> &lt;? </xsl:text>
      <xsl:value-of   select="name()"   />
      <xsl:text>   </xsl:text>
      <xsl:value-of   select="."   />
      <xsl:text> ?&gt; </xsl:text>
    </span>
    <br   />
  </xsl:template>
  
  <!--Comment   Template-->
  <xsl:template   match="comment()">
    <span   class="xmlComment">
      <xsl:text> &lt;!--   </xsl:text>
      <xsl:value-of   select="."   />
      <xsl:text>   --&gt; </xsl:text>
    </span>
    <br   />
  </xsl:template>
  <!--Text   Template-->
  <xsl:template   match="text()">
    <xsl:if   test="text()   !=   ''">
      <span   class="xmlText">
        <xsl:value-of   select="."   />
      </span>
      <br   />
    </xsl:if>
  </xsl:template>
  
  
  <!--Empty   Element   Template-->
  <xsl:template   match="*">
    <img   src="images/file.png"   border="0"   />
    <xsl:text> &lt; </xsl:text>
    <span   class="xmlName">
      <xsl:value-of   select="name()"   />
    </span>
    <xsl:apply-templates   select="@*"   />
    <xsl:text>   /&gt; </xsl:text>
    <br   />
  </xsl:template>
  
  
  <!--Text   Element   Template-->
  <xsl:template   match="*[text()]">
    <img   src="images/file.png"   border="0"   />
    <xsl:text> </xsl:text>
    <span   class="xmlName">
      <xsl:value-of   select="name()"   />
    </span>
    <xsl:apply-templates   select="@*"   />
    <xsl:text> &gt; </xsl:text>
    <span   class="xmlText">
      <xsl:value-of   select="."   />
    </span>
    <xsl:text> &lt;/ </xsl:text>
    <span   class="xmlName">
      <xsl:value-of   select="name()"   />
    </span>
    <xsl:text> &gt; </xsl:text>
    <br   />
  </xsl:template>
  
  
  <!--Node   Element   Template-->
  <xsl:template   match="*[*]">
    <img   src="images/Lminus.png"   border="0"   onclick="collapse(this)"   />
    <img   src="images/foldericon.png"   border="0"   />
  [color=#FF0000] <a   href="/showXML.jsp?nodeName="   class="f11du"> [/color]
      <xsl:text> &lt; </xsl:text>
      <span   class="xmlName">
        <xsl:value-of   select="name()"   />
      </span>
      <xsl:apply-templates   select="@*"   />
      <xsl:text> &gt; </xsl:text>
    </a>           
    <div>
      <xsl:apply-templates   />
    </div>
    <xsl:text> &lt;/ </xsl:text>
    <span   class="xmlName">
      <xsl:value-of   select="name()"   />
    </span>
    <xsl:text> &gt; </xsl:text>
    <br   />
  </xsl:template>
</xsl:stylesheet>


--  作者:Qr
--  发布时间:2/4/2008 10:59:00 AM

--  
<a   href="/showXML.jsp?nodeName='{name()}'"   class="f11du">
似乎是这样写吧,只是不大明白你的意思,最好贴XML来看看.
--  作者:wtoxiao
--  发布时间:2/4/2008 3:47:00 PM

--  
目的是将任意格式的xml解析成html, 此html在浏览器中可以显示成一棵树。 现在的结果是,显示成树没有问题, 但是对于非叶子节点, 我希望能够做一个链接,让它能提交请求给服务器,告诉服务器该节点的名字。
--  作者:wtoxiao
--  发布时间:2/6/2008 2:04:00 AM

--  
非常感谢Qr。

我还有一事请教,为什么通过这个xsl解释的xml可以在firefox上正常显示,到ie7上就什么都显示不出,请高人指点。


--  作者:wtoxiao
--  发布时间:2/13/2008 3:18:00 AM

--  
在ie7上显示的问题已经解决了, 去掉version="1.1"   xmlns="http://www.w3.org/1999/xhtml" 说明既可.
--  作者:yjy811205
--  发布时间:5/5/2008 11:46:00 AM

--  
楼主可不可以把你完成的实例给我发一份,我想学习一下,谢了,我邮箱是yjy811205@163.com
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms