| 在线等,求教XML数据输出问题 |
| [ 来源:ITWENKU 时间:2007-4-17 16:29:14 | 浏览:184人次
] |
| |
我的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="Room/RoomName"> 改为: <xsl:for-each select="Root/Room/RoomName">
还有这一句:<xsl:value-of select="Room/RoomName" /> 改为: <xsl:value-of select="." />
即可。
<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="."/>也是可行的。
conis的方法和我的一样。 用*指所有节点,因为Room下面的所有节点都是RoomName,所以不用*直接用RoomName也是没有区别的。
|
|
 |
最新更新 |
|