代码之家  ›  专栏  ›  技术社区  ›  jwaliszko

XPath表达式-需要帮助

  •  2
  • jwaliszko  · 技术社区  · 14 年前

    <users>
        <user name="user1">
            <roles separator=",">ADM,USER</roles>
        </user>
        <user name="user2">
            <roles separator=",">ADM,GUEST</roles>
        </user>
        <user name="user3">
            <roles separator=",">READER,GUEST</roles>
        </user>
    </users>
    

    有什么办法可以得到所有的吗 用户 客人 使用 XPath表达式

    3 回复  |  直到 14 年前
        1
  •  0
  •   Per T    14 年前

    如果您能够使用XSLT2.0,我建议您标记角色字符串。使用 contains()

    /users/user[tokenize(roles, roles/@separator) = 'GUEST']/@name
    

    这个XPath将标记 roles @separator 并返回具有此角色的用户。

        2
  •  1
  •   Oded    14 年前

    此XPath表达式将选择角色节点包含的所有用户 GUEST .

    //user[contains(roles, 'GUEST')]
    

    看到了吗 contains xpath函数。

        3
  •  1
  •   Dimitre Novatchev    14 年前

    :

    /users/user/[roles[contains(concat(@separator, ., @separator), 
                                concat(@separator, 'GUEST', @separator)
                               )
                      ]
                ]
    

    这将选择所有所需的 user 'GUEST' 是唯一的角色或位于字符串的开头、中间或结尾 .