当前位置:  开发笔记 > Android > 正文

如何在每个测试中引用XSL中的当前节点值?

如何解决《如何在每个测试中引用XSL中的当前节点值?》经验,为你挑选了2个好方法。

假设我有一个像这样的XML文档:


    1110
    1111
    1112
    1113

我正在尝试设置一个条件来测试当前节点的值for-each,但是我做错了:


    
        Success
    

我做错了什么?



1> Ben Blank..:

.实际上,使用can可以引用当前(或"上下文")节点,但不是指您在此处使用它的方式.在XPath中,.[foo]语法无效 - 您需要使用self::node()[foo].此外,=运算符需要匹配的东西,在这种情况下,text()选择器访问元素的文本内容:


    
        Success
    

但是,如其他答案中所述,除非您for-each正在执行其他操作,否则您根本不需要迭代,只能if用于完成相同的任务:


    Success



2> Dimitre Nova..:

我正在尝试设置一个条件来测试for-each中当前节点的值,但是我做错了:

第一件不正确的是语法:

   .[='1112']

这里有两个错误:

    在[和]内没有谓词:"="运算符需要两个参数,但只提供一个.

    .[x = y]仍然是无效的语法,虽然谓词是好的.这必须指定为:

    自::节点()[条件]

提供的代码中可以改进的第二件事指令,这根本不是必需的; 单个XPath表达式就足够了.

总而言之,一个可能的XPath表达式求值为所需的布尔值:

   /books/book[. = '1112']

如果确实需要在指令内测试条件,那么我将使用的一个正确的XPath表达式是:

   . = '1112'

以上是字符串比较,如果周围有空格,可能无法评估true().因此,数值比较可能更好:

  . = 1112

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有