以文本方式查看主题

-  中文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=13245)


--  作者:mailtolily
--  发布时间:1/4/2005 2:20:00 PM

--  大家帮帮忙!如何将XML同网页一样显示出来!!!!!!!!!

我现在写了一个XSL,但是显示的页面不是我所想要的,请大家帮帮忙!
XML参考“如何实现如同网页显示一样???????????”贴子!

我想要的页面如:图片所示

xsl:

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="CONTENT">
<xsl:variable name="pic" select="CONTENTITEM/MEDIA/@SRC"/>
<html>
<body algin = "center">
<script language="javascript">
 var xml = new ActiveXObject("Microsoft.XMLDOM ");
 xml.async = false;
 xml.load (" test.xml ");   
</script>

<TABLE cellSpacing="0" cellPadding="0"  width="100%" border="0">
                    <TBODY>
                    <TR vAlign="top">
                      <TD colSpan="3"></TD></TR>
                    <TR vAlign="top">
                      <TD width="140">
                        <DIV>
                         <img SRC="{$pic}">
       </img>
        <xsl:element name="A">
        <xsl:attribute name="href">
         <xsl:value-of select="CONTENTITEM/URL" />
        </xsl:attribute>
        <xsl:attribute name="target">
         _blank
        </xsl:attribute>
      <font size="2">
      <xsl:value-of select="CONTENTITEM/ABSTRACT" />
      </font>
       </xsl:element>
                        </DIV>
                      </TD>
                      
                      <TD>
                      
<xsl:for-each select="CONTENTITEM">
<font size="2">
                        <B>
                        <DIV>
                         <xsl:element name="A">
        <xsl:attribute name="href">
         <xsl:value-of select="URL" />
        </xsl:attribute>
        <xsl:attribute name="target">
         _blank
        </xsl:attribute>
         <xsl:value-of select="HEADLINE[HEADLINE='今日要闻']" />
       </xsl:element>
                        </DIV>
                        </B>
               
                         <LI>
          <xsl:element name="A">
        <xsl:attribute name="href">
         <xsl:value-of select="URL" />
        </xsl:attribute>
        <xsl:attribute name="target">
         _blank
        </xsl:attribute>
         <xsl:value-of select="HEADLINE" />
       </xsl:element>
                         </LI>
</font>
</xsl:for-each>
                           
                          </TD>
                          
                          </TR>
                          </TBODY>
                          </TABLE>

<TABLE cellSpacing="0" cellPadding="0"  width="100%" border="0">
                    <TBODY>
                    <TR vAlign="top">
                      <TD colSpan="3"></TD></TR>
                    <TR vAlign="top">                         
                          </TR>
                          </TBODY>
                          </TABLE>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


此主题相关图片如下:
按此在新窗口浏览图片


[此贴子已经被作者于2005-1-4 20:40:44编辑过]

--  作者:给我新鲜
--  发布时间:1/4/2005 2:24:00 PM

--  
佩服。我还没学到那里。
--  作者:mailtolily
--  发布时间:1/4/2005 8:48:00 PM

--  
有谁可以帮我吗?
着急啊!!!!
--  作者:doubleG
--  发布时间:1/5/2005 6:16:00 PM

--  
这个应该只是一个排版的问题,请你把XML文件重新发一下吧,我看到的都是乱码。
--  作者:mailtolily
--  发布时间:1/5/2005 7:01:00 PM

--  
谢谢,doubleG!
<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<CONTENT TID="1707">
<CONTENTITEM>
<DATA>
  <STATUS>Make Live</STATUS>
  </DATA>
<MEDIA CAPTION="" TYPE="IMAGE" SRC="http://www.ynet.com/img.db?4268908" HEIGHT="170" WIDTH="145" />
  <URL>http://www.ynet.com/view.jsp?oid=4268909</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <ABSTRACT>珠江口发生重大溢油事故</ABSTRACT>
  <URL>http://www.ynet.com/view.jsp?oid=4268909</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>今日要闻</HEADLINE>
  <URL>http://msn.ynet.com/more.jsp?bid=3999341</URL>
</CONTENTITEM>
<CONTENTITEM>
  <DATA TYPE="QUICKLINKS" />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>旅游局称我公民赴美旅游尚无确切时间表</HEADLINE>
  <URL>http://msn.ynet.com/view.jsp?oid=4268482</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>乌克兰通过政治改革法案 大选危机趋缓</HEADLINE>
  <URL>http://msn.ynet.com/view.jsp?oid=4268427</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>滥杀无辜谎称自卫 驻伊美军暴行大曝光(图)</HEADLINE>
  <URL>http://msn.ynet.com/view.jsp?oid=4265335</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
  <CONTENTITEM />
  <CONTENTITEM />
<CONTENTITEM>
  <HEADLINE>热点</HEADLINE>
  <URL>http://msn.ynet.com/more.jsp?bid=4004875</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>[社会]北京人离小康住房还差20多平方米</HEADLINE>
  <URL>http://msn.ynet.com/view.jsp?oid=4263158</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>[娱乐]好莱坞访华明星公布 冯小刚受青睐</HEADLINE>
  <URL>http://www.ynet.com/view.jsp?oid=4268778</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>北青传媒精华</HEADLINE>
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>第一财经日报:外资影视公司新目标</HEADLINE>
  <URL>http://www.ynet.com/view.jsp?oid=4264518</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>法制晚报:中国足球两种势力的交锋</HEADLINE>
  <URL>http://www.ynet.com/view.jsp?oid=4263526</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>北京青年报:柳传志将彻底退隐幕后</HEADLINE>
  <URL>http://www.ynet.com/view.jsp?oid=4265509</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>北京科技报:蜥蜴水上飞咋克服重力</HEADLINE>
  <URL>http://bkb.ynet.com/article.jsp?oid=4263690</URL>
  </CONTENTITEM>
  <CONTENTITEM />
<CONTENTITEM>
  <HEADLINE>频道推荐</HEADLINE>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>2004年国内娱乐星闻大盘点(组图)</HEADLINE>
  <URL>http://www.ynet.com/Events.jsp?eid=4217931</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE>年终盘点:中国企业2004年之变化</HEADLINE>
  <URL>http://www.ynet.com/Events.jsp?eid=4147257</URL>
  </CONTENTITEM>
<CONTENTITEM>
  <HEADLINE />
  <URL />
  </CONTENTITEM>
<CONTENTITEM>
  <MEDIA TYPE="IMAGE" SRC="http://www.ynet.com/img.db?4271623" HEIGHT="54" WIDTH="86" CAPTION="" />
  <URL>http://bj.ynet.com/view.jsp?oid=4255921</URL>
  </CONTENTITEM>
  <CONTENTITEM />
<CONTENTITEM>
  <ABSTRACT>朱镕基再露面 获欧洲中小企业奖</ABSTRACT>
  </CONTENTITEM>
  </CONTENT>

--  作者:forwar
--  发布时间:1/6/2005 1:19:00 PM

--  
这个源码应该对你有所帮助,能实现这个网页的排版语句这里面基本上都有,不妨静下心来看看:



GOOD LUCK!!


--  作者:doubleG
--  发布时间:1/6/2005 1:43:00 PM

--  
搞定,具体一些日期啊,格式啊自己排吧,还有以后格式不好的我就不帮着写了,不然我写着心里很难受,呵呵
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <xsl:template match="CONTENT">
  <xsl:call-template name="showUpPart"/>
  <xsl:call-template name="showDownPart"/>
 </xsl:template>
 <xsl:template name="showUpPart">
  <table>
   <tr>
    <td>
     <xsl:call-template name="showAbstract">
      <xsl:with-param name="mediaPos">1</xsl:with-param>
     </xsl:call-template>
    </td>
    <td>
     <table>
      <xsl:for-each select="CONTENTITEM[string-length(HEADLINE) > 0 and string-length(HEADLINE)&lt;8][position()&lt;3]">
       <xsl:call-template name="showBigTitle"/>
       <xsl:call-template name="showHeadLine">
        <xsl:with-param name="firstBlankItem" select="following-sibling::*[string-length(HEADLINE) = 0 and string-length(DATA/@TYPE) = 0]"/>
       </xsl:call-template>
      </xsl:for-each>
     </table>
    </td>
   </tr>
  </table>
 </xsl:template>
 <xsl:template name="showDownPart">
  <table>
   <tr>
    <td>
     <table>
      <xsl:for-each select="CONTENTITEM[string-length(HEADLINE) > 0 and string-length(HEADLINE)&lt;8][position()>2]">
       <xsl:call-template name="showBigTitle"/>
       <xsl:call-template name="showHeadLine">
        <xsl:with-param name="firstBlankItem" select="following-sibling::*[string-length(HEADLINE) = 0 and string-length(DATA/@TYPE) = 0]"/>
       </xsl:call-template>
      </xsl:for-each>
     </table>
    </td>
    <td>
     <xsl:call-template name="showAbstract">
      <xsl:with-param name="mediaPos">2</xsl:with-param>
     </xsl:call-template>
    </td>
   </tr>
  </table>
 </xsl:template>
 <xsl:template name="showAbstract">
  <xsl:param name="mediaPos"/>
  <xsl:variable name="mediaItemSet" select="//CONTENTITEM/MEDIA/parent::node()"/>
  <xsl:variable name="mediaItem" select="$mediaItemSet[number($mediaPos)]"/>
  <table>
   <tr>
    <td>
     <a href="{$mediaItem/URL}">
      <img src="{$mediaItem/MEDIA /@SRC}"/>
     </a>
    </td>
   </tr>
   <tr>
    <td>
     <xsl:value-of select="$mediaItem/following-sibling::CONTENTITEM/ABSTRACT[string-length(.) > 0]"/>
    </td>
   </tr>
  </table>
 </xsl:template>
 <xsl:template name="showHeadLine">
  <xsl:param name="firstBlankItem"/>
  <xsl:variable name="currentNode" select="current()"/>
  <xsl:for-each select="following-sibling::*">
   <xsl:if test="count(.|$firstBlankItem[1])=1">
    <xsl:call-template name="showHeadLineContent">
     <xsl:with-param name="firstBlankItemPos" select="position()"/>
     <xsl:with-param name="currentNode" select="$currentNode"/>
    </xsl:call-template>
   </xsl:if>
  </xsl:for-each>
 </xsl:template>
 <xsl:template name="showHeadLineContent">
  <xsl:param name="firstBlankItemPos"/>
  <xsl:param name="currentNode"/>
  <xsl:for-each select="$currentNode/following-sibling::*[position()&lt;number($firstBlankItemPos)]">
   <xsl:call-template name="setLink"/>
  </xsl:for-each>
 </xsl:template>
 <xsl:template name="setLink">
  <xsl:if test="string-length(HEADLINE)!=0">
   <tr>
    <td>
     <li>
      <font size="2">
       <a href="{URL}">
        <xsl:value-of select="HEADLINE"/>
       </a>
      </font>
     </li>
    </td>
   </tr>
  </xsl:if>
 </xsl:template>
 <xsl:template name="showBigTitle">
  <tr>
   <td>
    <b>
     <font size="4" color="blue">
      <xsl:value-of select="HEADLINE"/>
     </font>
    </b>
   </td>
  </tr>
 </xsl:template>
</xsl:stylesheet>


我把文件上传了,直接用就好了。



--  作者:forwar
--  发布时间:1/6/2005 10:02:00 PM

--  
doubleG....大好人!!pfpf!!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms