我想使用xsl比较从txt目录列表在xsl中创建的三个变量。我可以使用diff3在bash中执行此操作,但是我必须在xsl中执行此操作-不是我的选择。
示例:
$ variable1包含
狗
猫
斑马
$ variable2包含
狗
猫
斑马
驴
$ variable3包含
狗
猫
斑马
马
我希望查询结果表明:
$ variable1缺少$ variable2中存在的驴和$ variable3中存在的马
$ variable2失踪了,出现在$ variable3中
$ variable3缺少驴,该驴存在于$ variable2中
有什么建议吗?显然我是xsl新手。感谢您的耐心等候。
答案 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> </xsl:text>
<xsl:text>Variable 2 was missing: </xsl:text>
<xsl:value-of select="($variable1, $variable3)[not(. = $variable2)]" separator=", "/>
<xsl:text> </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()
之类的函数来分割字符串并返回要测试的单词序列。