【问题标题】:split value of a parameter to multiple variables将参数的值拆分为多个变量
【发布时间】:2014-03-11 20:24:17
【问题描述】:

我有一个从命令行传递给我的 xsl 样式表的参数(我使用的是 saxon 9),我的参数“电子邮件”如下:

<xsl:param name="emails" select="emails"/> 

及其价值: “john.doe@corp.com,jane.doe@corp.com,...”

我的参数可以包含多封电子邮件。

我想捕获每封电子邮件并将其分配给一个变量:$email1、$email2、$email3 ...

一旦我有了我的变量,我需要根据这些变量进行一些检查:

<xsl:if test="./text()=$email1">
     <!-- some operations -->
</xsl:if>
<xsl:if test="./text()=$email2">
     <!-- some operations -->
</xsl:if>
...

我该如何继续 (XSLT 2 /xpath 2 ) ??

谢谢!!

【问题讨论】:

    标签: xml xslt xpath xslt-2.0 xpath-2.0


    【解决方案1】:

    在 Xpath 2 中,您可以使用 tokenize 来拆分邮件地址:

    tokenize($emails, ",")
    

    例如,在 XSLT 中可能:

     <xsl:variable name="email" select="tokenize($emails, ',')"/>
    

    然后您可以通过$email[1]$email[2]、...访问它们

    这比使用“$email1”更有意义

    【讨论】:

    • 您也可以在xsl:param 中传递一个序列并一起跳过tokenize()...('john.doe@corp.com','jane.doe@corp.com')
    • Benibela,由于我不知道电子邮件的数量,我不明白如何访问它们来创建我的案例(如果)?丹尼尔,序列?
    • tokenize 返回一个序列。然后你可以使用count($email) 来获得计数(德古拉?)。你可能应该使用循环而不是许多 ifs
    • @Zatla00 - 序列是零个或多个项目(原子值或节点)的有序集合。如果你给出一个更详细的例子来说明你正在尝试做什么,有人可以添加一些使用序列来获得你想要的结果的简单例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2018-05-13
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多