XSL中判断一个节点是否为空咋办呢?

peppi 2002-09-27 02:46:41
XML:
<logo>founder.gif <!--欲判断此处是否有内容-->
<location>left</location>
<href>mailto:chenbo</href>
</logo>

XSL:
<xsl:template match="logo">

<xsl:if test="sting-length(normalize-space())>0"> <!--判断当前节点字符是
长度是否大于0-->
<a>

<xsl:attribute name="href">
<xsl:value-of select="href"/>
</xsl:attribute>

<img border="0">

<xsl:attribute name="src">
/MyWebSite/webApplication/resource/image/logo/
<xsl:value-of select="logo"/>
</xsl:attribute>

<xsl:attribute name="align">
<xsl:value-of select="location"/>
</xsl:attribute>

</img>
</a>
</xsl:if>

</xsl:template>

我想进行的操作是:我想在<LOGO>后面判断是否有内容,如果有则输出,没有就不做处理.这里是判断是否有founder.gif,有则处理.我该怎么办?
...全文
224 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
outside 2002-09-28
直接<xsl:value-of select="text()"> 就可以


下面的代码解决你最初的问题

<xsl:template match="logo">
<xsl:if test="text()">
<a>
<xsl:attribute name="href">
<xsl:value-of select="href"/>
</xsl:attribute>
<img border="0">
<xsl:attribute name="src">
<xsl:value-of select="text()"/>
</xsl:attribute>
<xsl:attribute name="align">
<xsl:value-of select="location"/>
</xsl:attribute>
</img>
</a>
</xsl:if>
</xsl:template>
回复
peppi 2002-09-28
我改成孟先生的结构可以正常显示,但我现在就想弄明白,是不是我刚说的这种结构不能实现呢?怎么判断XX是不是空?如果不空,又怎么把XX取出来?
<xsl:value-of select="a">
有点问题,取不出来
<xsl:value-of select=".">
就把BC的都取出来了,那我该怎么办,用
//a,不行;a[position()=1],不行,a/text(),不行,a/following::text()也不行,我不知道还有什么行了?呵呵,帮帮我.
回复
peppi 2002-09-28
net_lover(孟子E章):
难道对于这样的结构
<a>XX
<b>12</b>
<c>4</>
</a>

不能判断XX那是不是有值吗?我想判断它是不是有值,如果有,就事例化这个节点.谢谢~~~~
回复
孟子E章 2002-09-27
你的xml组织的不合理,应该这样比较好处理:
<logo img="founder.gif"> <!--欲判断此处是否有内容-->
<location>left</location>
<href>mailto:chenbo</href>
</logo>

或者:
<logo>
<img>founder.gif</img>
<location>left</location>
<href>mailto:chenbo</href>
</logo>
回复
lqy169 2002-09-27
試一試
<xsl:if test="boolean(.)">
回复
peppi 2002-09-27
outside(是是) :
不行,你这样的话输出会在src里多出mailto:chenbo.

如果我用<xsl:if test="sting-length(normalize-space())>0">或者<xsl:if test="sting-length()>0">或者<xsl:if test="sting-length()>1">,经过JAXP后生成的HTML里有
<a href="mailto:chenbo23@sina.com.cn"><img border="0" src="%0D%0A../resource/image/logo/%0D%0A" align="left"></a>
如果用孟先生的
<xsl:if test="logo !=''">
就连<a><img>都没有了,为什么呢?我感觉我的那种方法可能是路径没弄对?但我又感觉孟先生的方法是最容易理解的,是正确的,可为什么输出就不行了呢?
回复
outside 2002-09-27
<xsl:value-of select="logo"/>

改为<xsl:value-of select="."/>
回复
peppi 2002-09-27
net_lover(孟子E章) :
我照你说的改了,可原来还有图片的位置和而且还可以超连接,就是不显示图片,现在连超连接都没了,那个位置就什么都没有,通过JAXP生成的HTML里就没有那个IMG代码.是怎么回事呢?
回复
孟子E章 2002-09-27
<xsl:if test="logo !=''">
回复
dqping 2002-09-27
1
回复
peppi 2002-09-27
sting-length少打个R是笔误
改:string-length
回复
发动态
发帖子
XML/XSL
创建于2007-09-28

8779

社区成员

XML/XSL相关问题讨论专区
申请成为版主
社区公告
暂无公告