В этом случае вы сможете упростить его до этого ...
<xsl:variable name="mytest" select="not(Segment[SegmentField != $globalValue])" />
Итак, выражение Segment[SegmentField != $globalValue])
возвращает все Segments
, где SegmentField
не соответствует глобальномузначение.Применяя not
к этому, если в наборе есть какие-либо элементы, то использование not
вернет false, в противном случае возвращается false.
EDIT: В ответ на ваши изменения, если вы хотите проверитьвсе значения SegmentField были одинаковыми для каждого SegmentWrapper, вы должны определить свою переменную следующим образом:
<xsl:variable name="mytest" select="not(Segment/SegmentField != Segment/SegmentField)" />
На первый взгляд это может показаться странным, поскольку вы можете подумать, что Segment/SegmentField != Segment/SegmentField
всегда будет ложным.Но Segment/SegmentField
возвращает последовательность, и когда вы используете оператор сравнения для этого, он вернет true, если один из узлов в первой последовательности сравнивается с одним из узлов во второй последовательности.
Вам на самом деле не нужнопеременная, хотя, вы могли бы написать это:
<xsl:template match="OuterElement">
<xsl:for-each select="SegmentWrapper[not(Segment/SegmentField != Segment/SegmentField)]">
<xsl:value-of select=".//SegmentField" separator=";"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>