您的位置:程序门 -> web 开发 -> xml/soap



在线等,求教xml数据输出问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


在线等,求教xml数据输出问题
发表于:2007-04-17 16:29:13 楼主

我的xml文档如下:    
<?xml     version= "1.0 "     encoding= "gb2312 "     ?>        
-     <root     description= "用户套房 "     memberid= "2757 "     username= "command "     sex= "男 "     state= "0 "     lastupdate= "4/17/2007     1:04:44     pm ">    
-     <room>    
      <roomname     roomid= "房间1 "> 房间1 </roomname>        
      <roomname     roomid= "房间2 "> 房间2 </roomname>        
      <roomname     roomid= "房间3 "> 房间3 </roomname>        
      </room>    
-     <item     description= "用户套房信息 ">    
-     <houseinfo>    
      <houseid> 1732 </houseid>        
      <housename> command的套房 </housename>        
      <housetype> 10 </housetype>        
      <houseimg> /images/shop/user/defaultmanbody.gif </houseimg>        
      <visited> 9 </visited>        
      <members> 1 </members>        
      </houseinfo>    
      </item>    
-     <item     description= "成员信息 ">    
-     <memberinfo>    
-     <data>    
      <memberid> 2757 </memberid>        
      <username> command </username>        
      <sex> 男 </sex>        
      </data>    
      </memberinfo>    
      </item>    
-     <item     description= "拜访信息 ">    
      <visitmessage     />        
      </item>    
      </root>    
 
我在xls样式表里想在一个写一个select下来菜单让用户选择-    
<room>    
      <roomname     roomid= "房间1 "> 房间1 </roomname>        
      <roomname     roomid= "房间2 "> 房间2 </roomname>        
      <roomname     roomid= "房间3 "> 房间3 </roomname>        
</room>    
里面每一个roomname子元素的值,应该怎么写.    
 
我是这样写的    
<td     width= "16% "> <select     name= "select ">    
<xsl:for-each     select= "room/roomname ">    
<option> <xsl:value-of     select= "room/roomname "     /> </option>    
</xsl:for-each>    
</select> </td>    
为什么我的下拉菜单里面没有内容,是空白的,但是有3个选项在里面,只是内容是空白
发表于:2007-04-18 11:13:321楼 得分:0
请把这一句: <xsl:for-each     select= "room/roomname ">
改为:     <xsl:for-each     select= "root/room/roomname ">

还有这一句: <xsl:value-of     select= "room/roomname "     />
改为:             <xsl:value-of     select= ". "   />

即可。
发表于:2007-04-18 13:50:312楼 得分:0
<xsl:for-each   select= "root/room/*>
</xsl:for-each>
*表示指定节点下的所有节点
.表示当前节点,等同于current()
楼上的应该解决不了问题
发表于:2007-04-18 14:23:493楼 得分:0
根据楼主的意思,我认为他只是要取“房间1,2,3”这几个数据。xml文件下面的大段都是无关的,所以就没有理会。
楼主的错误在于对根结点认识不清。在这个xsl文件中,“/”   是根结点,“root”是根结点的第一个子节点。当前节点为根结点时,用 "room/roomname "肯定是什么都拿不到的,只能改为 "root/room/roomname "或是 "//room/roomname "才可以。
当上下文节点经过 "root/room/roomname "后,转变为 "roomname ",此时上下文节点下已以不存在 "room/roomname "这样的路径,所以用 "room/roomname "也是什么都取不到。
因此这两处都必须改。改过后当然可以取到当前节点值。

像conis给出的方法, <for-each> 循环中间的写成 <xsl:value-of   select= ". "/> 也是可行的。
发表于:2007-04-18 14:25:564楼 得分:0
conis的方法和我的一样。   用*指所有节点,因为room下面的所有节点都是roomname,所以不用*直接用roomname也是没有区别的。


快速检索

最新资讯
热门点击