新足迹

 找回密码
 注册

精华好帖回顾

· 航航小厨房(52) 【~~~~~~四川叶儿耙~~~~~~】 (2011-7-30) 航迹云 · 凝凝回归!田园脆鸡堡——从面包开始DIY的简单松软汉堡包(儿童节的前奏) (2011-5-31) feicunzic
· 【鼠年大吉】年夜饭 (2020-1-26) ayeeda · 莴笋 (2014-6-15) qld
Advertisement
Advertisement
查看: 1305|回复: 9

XSLT高手请帮个忙 [复制链接]

发表于 2011-8-18 18:55 |显示全部楼层
此文章由 数学家 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 数学家 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最近有个xslt 1.0的问题很是困扰,希望高手们能帮个忙。
一个XML如下:
<A>
        <B>
                <C>C1</C>
                <C>C2</C>               
        </B>
</A>

用一个变量读取<B>这个node,然后检测是node还是string。如果是,则打印node,是string则打印string。

<xsl:template match="/A">
        <xsl:variable name="temp"><xsl:value-of select="B"/></xsl:variable>
        <!-- 试图检测这个变量是node还是string,可是不会写。有明白高手给帮帮忙 -->
        <xsl:if test="$temp is a node">node</xsl:if>
        <xsl:if test="$temp is a string">string</xsl:if>
</xsl:template>

[ 本帖最后由 数学家 于 2011-8-18 18:01 编辑 ]
Advertisement
Advertisement

发表于 2011-8-18 19:03 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不明白你要什么,飘过
直接用 foreach 不行么?

发表于 2011-8-18 19:04 |显示全部楼层
此文章由 数学家 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 数学家 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-8-18 18:03 发表
不明白你要什么,飘过
直接用 foreach 不行么?


要的是“怎么知道变量里是node还是string”。

退役斑竹 特殊贡献奖章 新闻达人 三奖

发表于 2011-8-18 19:10 |显示全部楼层
此文章由 花生 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 花生 所有!转贴必须注明作者、出处和本声明,并保持内容完整
<xsl:for-each select="B">打印node
<xsl:for-each select="C">打印string
       </xsl:for-each>
</xsl:for-each>

发表于 2011-8-18 19:11 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果只是为了这个目的,LS这样就很好了,除非你还有其它目的

[ 本帖最后由 典 于 2011-8-18 18:55 编辑 ]

发表于 2011-8-18 20:11 |显示全部楼层
此文章由 数学家 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 数学家 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-8-18 18:11 发表
如果只是为了这个目的,LS这样就很好了,除非你还有其它目的


是我的表达问题。

我把问题简化一下:有一个变量temp,你怎么知道这个变量是string还是个node?不要看我的例子,只回答这个问题。
Advertisement
Advertisement

发表于 2011-8-18 20:30 |显示全部楼层
此文章由 混不到坑的萝卜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 混不到坑的萝卜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 数学家 于 2011-8-18 19:11 发表
我把问题简化一下:有一个变量temp,你怎么知道这个变量是string还是个node?不要看我的例子,只回答这个问题。

你是想问:如果在测试的node是否含有sub node?

如果是这样,你可以用这个来测试:
  <xsl:template match="/A">
    <xsl:variable name="temp" select="B" />
    <xsl:if test="$temp/* != '0'">
      <!-- this is a node with sub node -->
    </xsl:if>
  </xsl:template>

[ 本帖最后由 混不到坑的萝卜 于 2011-8-18 19:47 编辑 ]

发表于 2011-8-18 20:33 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没有做过这种,不懂
这里有个这方面的讨论,不知道行不行http://www.biglist.com/lists/xsl ... 00410/msg00710.html

发表于 2011-8-18 21:57 |显示全部楼层
此文章由 数学家 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 数学家 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢各位了。我明天到公司试试去。

发表于 2011-11-2 16:33 |显示全部楼层
此文章由 雄鹰展翅 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 雄鹰展翅 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这里数学家都有,强

评分

参与人数 1积分 +4 收起 理由
闲人甲 + 4 我很赞同

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部