读书人

,求教XML数据输出有关问题

发布时间: 2012-02-27 10:00:22 作者: rapoo

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

我的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个选项在里面,只是内容是空白

[解决办法]
<xsl:for-each select= "Root/Room/*>
</xsl:for-each>
*表示指定节点下的所有节点
.表示当前节点,等同于current()
楼上的应该解决不了问题
[解决办法]
根据楼主的意思,我认为他只是要取“房间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= ". "/> 也是可行的。

读书人网 >XML SOAP

热点推荐