在XSLT中应用条件选择特定行

时间:2013-10-30 11:13:51

标签: xml xslt xslt-1.0

我有一个XSL变量variants,它包含这样的数据

    <syddata lastUpdated="30.10.2013 05:50 ">
  <data itemnumber="sd20-grøn-200cm" variant1="Grøn" variant2="140x200 cm"  var1code="gron" var2code="200cm"></data>
  <data itemnumber="sd20-grøn-220cm" variant1="Grøn" variant2="140x220 cm"  var1code="gron" var2code="220cm" ></data>
  <data itemnumber="sd20-grå-200cm" variant1="Grå" variant2="140x200 cm" var1code="graa" var2code="200cm" ></data>
  <data itemnumber="sd20-grå-220cm" variant1="Grå" variant2="140x220 cm"  var1code="graa" var2code="220cm"></data>
</syddata>

现在我想从中选择一个特定的行,variant1="Grå"variant2="140x200 cm"我尝试过这样的行

<xsl:if test="$variants/syddata/data/@variant1 = 'Grå'  and $variants/syddata/data/@variant2 = '140x200 cm'">
        <xsl:value-of select="@itemnumber"/>
    </xsl:if>

但它没有给我任何东西。任何人都可以告诉我在XSLT中实现这个逻辑的正确方法

1 个答案:

答案 0 :(得分:1)

测试

$variants/syddata/data/@variant1 = 'Grå'  and
 $variants/syddata/data/@variant2 = '140x200 cm'

只需使用data检查variant1="Grå"元素是否包含data元素,还是variant2="140x200 cm"元素(不一定是同一元素)。如果要检查相同的 data元素上的两个条件,然后提取其项目编号,则需要更像

的内容
<xsl:variable name="item"
   select="$variants/syddata/data[@variant1='Grå' and @variant2='140x200 cm']" />
<xsl:if test="$item"><xsl:value-of select="$item/@itemnumber" /></xsl:if>