вопрос - сравнить три переменные в xsl и вывести различия между тремя? - PullRequest
0 голосов
/ 01 октября 2018

Я хочу использовать xsl для сравнения трех переменных, которые созданы в xsl из списков каталогов txt.Я могу сделать это в bash, используя diff3, но я должен сделать это в xsl - не мой выбор.

пример:

$ variable1 содержит
dog
cat
zebra

$ variable2 содержит
собака
кошка
зебра
осел

$ variable3 содержит
собака
кошка
зебра
лошадь

Мне бы хотелось, чтобы результат запроса показал, что:

$ variable1 отсутствовал осел, который присутствовал в $ variable2, и лошадь, которая присутствовала в $ variable3

$ variable2 отсутствовал horse, который присутствовал в $ variable3

$ variable3 отсутствовал осел, который присутствовал в $ variable2

Есть предложения?Очевидно, я новичок xsl.Спасибо за ваше терпение.

1 Ответ

0 голосов
/ 01 октября 2018

Эта таблица стилей 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(), чтобы разбить строку и вернуть последовательность слов для проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...