问题-比较xsl中的三个变量并输出三个变量之间的差异?

时间:2018-10-01 00:21:10

标签: xslt

我想使用xsl比较从txt目录列表在xsl中创建的三个变量。我可以使用diff3在bash中执行此操作,但是我必须在xsl中执行此操作-不是我的选择。

示例:

$ variable1包含


斑马

$ variable2包含


斑马

$ variable3包含


斑马

我希望查询结果表明:

$ variable1缺少$ variable2中存在的驴和$ variable3中存在的马

$ variable2失踪了,出现在$ variable3中

$ variable3缺少驴,该驴存在于$ variable2中

有什么建议吗?显然我是xsl新手。感谢您的耐心等候。

1 个答案:

答案 0 :(得分:1)

XSLT 2.0 样式表演示了如何找到其他两个变量中的哪个单词,而不是被测试变量中的哪个单词。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output omit-xml-declaration="yes"/>

    <xsl:variable name="variable1" select="'dog','cat','zebra'"/>
    <xsl:variable name="variable2" select="'dog','cat','zebra','donkey'"/>
    <xsl:variable name="variable3" select="'dog','cat','zebra','horse'"/>

    <xsl:template match="/">
        <xsl:text>Variable 1 was missing: </xsl:text>
        <xsl:value-of select="($variable2, $variable3)[not(. = $variable1)]" separator=", "/>
        <xsl:text>&#10;</xsl:text>
        <xsl:text>Variable 2 was missing: </xsl:text>
        <xsl:value-of select="($variable1, $variable3)[not(. = $variable2)]" separator=", "/>
        <xsl:text>&#10;</xsl:text>
        <xsl:text>Variable 3 was missing: </xsl:text>
        <xsl:value-of select="($variable1, $variable2)[not(. = $variable3)]" separator=", "/>    
    </xsl:template>

</xsl:stylesheet>

它产生以下输出:

Variable 1 was missing: donkey, horse
Variable 2 was missing: horse
Variable 3 was missing: donkey

您没有显示如何分配变量值。此样式表中的这些变量包含一系列字符串值。如果您的变量碰巧是单个字符串,则可以使用诸如tokenize()之类的函数来分割字符串并返回要测试的单词序列。

相关问题