以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 XSL/XSLT/XSL-FO/CSS 』 (http://bbs.xml.org.cn/list.asp?boardid=8) ---- [求助]这个问题怎么解决? (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=9709) |
-- 作者:alextoby -- 发布时间:9/3/2004 10:59:00 AM -- [求助]这个问题怎么解决? <?xml version="1.0" ?> <Content> <Users> <UserID>1000</UserID> <Name>张三</Name> <Password>12431123</Password> <Status>Offline</Status> <Age>20</Age> <Sex>男</Sex> <ImageIndex>0</ImageIndex> </Users> <Users> <UserID>1008</UserID> <Name>方方</Name> <Password>ff</Password> <IP>210.42.106.35</IP> <Status>Offline</Status> <Age>20</Age> <Sex>女</Sex> <ImageIndex>0</ImageIndex> </Users> </Content> 有这么个XML文件,第二个Users比第一个多了个IP(红色表示),我想用XSL把上面的内容用表格表示出来,有IP的显示IP的内容,没有的空出来,这个XSL该怎么写?谢谢
[此贴子已经被作者于2004-9-3 14:51:28编辑过]
|
-- 作者:doubleG -- 发布时间:9/3/2004 3:24:00 PM -- <?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table> <tr> <td>UseID</td> <td>Name</td> <td>Password</td> <td>IP</td> <td>Status</td> <td>Age</td> <td>Sex</td> <td>ImageIndex</td> </tr> <xsl:for-each select="Content/Users"> <tr> <td> <xsl:value-of select="UserID"/> </td> <td> <xsl:value-of select="Name"/> </td> <td> <xsl:value-of select="Password"/> </td> <td> <font color="red"><xsl:value-of select="IP"/></font> </td> <td> <xsl:value-of select="Status"/> </td> <td> <xsl:value-of select="Age"/> </td> <td> <xsl:value-of select="Sex"/> </td> <td> <xsl:value-of select="ImageIndex"/> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> 其实没有的节点会自动跳过去,大概就是上面这个意思。 |
-- 作者:孤独 -- 发布时间:9/4/2004 7:17:00 PM -- <xsl:if test="Ip != ''"> <tr> <td> <xsl:value-of select="Ip" /> </td> </tr> </xsl:if> |
-- 作者:alextoby -- 发布时间:9/6/2004 10:31:00 AM -- 谢谢大家的回答,根据孤独的解决方案,出现“预期的句柄 'eof' 找到 '!='。 Ip -->!=<-- '' ”这个问题,请问如何解决。谢谢! |
-- 作者:doubleG -- 发布时间:9/6/2004 11:07:00 AM -- 你的xml文件中IP都是大写的,要保持一致啊。 |
-- 作者:alextoby -- 发布时间:9/6/2004 11:23:00 AM -- 修改过后问题依然存在。 预期的句柄 'eof' 找到 '!='。 IP -->!=<-- '' |
-- 作者:doubleG -- 发布时间:9/6/2004 11:28:00 AM -- 文件大吗?发上来看看,在我的这里是没有问题的。 |
-- 作者:alextoby -- 发布时间:9/6/2004 11:37:00 AM -- xml文件:保存成TXT格式了 ![]() ![]() xsl文件: <?xml version="1.0" encoding="GB2312" ?> <xsl:template match="Name"> <xsl:template match="Password"> <xsl:template match="Status"> <xsl:template match="NickName"> <xsl:template match="Age"> <xsl:template match="Sex">
</xsl:stylesheet>
|
-- 作者:alextoby -- 发布时间:9/6/2004 11:52:00 AM -- 是不是我的XML没有配置好,XSL文件应该是没问题的,但是XML文件一用XSL文件转换就出现了问题。 |
-- 作者:alextoby -- 发布时间:9/6/2004 11:58:00 AM -- ... [此贴子已经被作者于2004-9-6 13:01:14编辑过]
|
-- 作者:doubleG -- 发布时间:9/6/2004 12:07:00 PM -- <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> ——> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:value-of />——> <xsl:value-of select="."/>
|
-- 作者:doubleG -- 发布时间:9/6/2004 12:19:00 PM -- 草案与正式版本有区别的,比较烦人。 如果名称空间是你原来的那个的话,这样就行。 <xsl:if test=".[IP != '']"> <TD bgcolor="#FFFFFF" STYLE="font-size:12t"> <xsl:value-of /> </TD> </xsl:if>
|
-- 作者:alextoby -- 发布时间:9/6/2004 1:27:00 PM -- 谢谢楼上的回答! 使用xsl:if判断,则原来的IP节点的内容也没有了, 还是答不到预期的效果。。。请帮忙看看 |
-- 作者:doubleG -- 发布时间:9/6/2004 2:10:00 PM -- 这是因为你用了template的原因,它会寻找match的节点,如果没有的话就不会执行template里的内容,所以会出现错位的情况因为少了<td>,如果不用template的话全写在总的template下就可以避免这样,但是前提是你的所有元素都必须写出来,很罗嗦。最好你的xml格式完整一些,不存在IP就用<IP/>表示就好了。
|
-- 作者:alextoby -- 发布时间:9/8/2004 11:30:00 AM -- Thanks! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
218.750ms |