每个条件的xslt

时间:2016-02-23 16:17:58

标签: xml xslt

我有以下代码 -

xml -

<pctList    class="array">
<e  class="object">
<hotelID    type="number">10180</hotelID>
</e>
<e  class="object">
<hotelID    type="number">10181</hotelID>
</e>
<e  class="object">
<hotelID    type="number">10182</hotelID>
</e>
</pctList> 

我的xslt -

  <xsl:for-each select="pctList/e">
                <xsl:choose>
                  <xsl:when test='(hotelID = 10079)'>
                    <db:EIS_RATE_FIELD_2>
                      <xsl:text disable-output-escaping="no">SPECIAL RATE</xsl:text>
                    </db:EIS_RATE_FIELD_2>
                  </xsl:when>
                  <xsl:otherwise>
                    <db:EIS_RATE_FIELD_2>
                      <xsl:text disable-output-escaping="no"></xsl:text>
                    </db:EIS_RATE_FIELD_2>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:for-each>

例外输出只有一个 -

<EIS_RATE_FIELD_2></EIS_RATE_FIELD_2>

我在使用时得到的输出错误 -

 <EIS_RATE_FIELD_2></EIS_RATE_FIELD_2>
 <EIS_RATE_FIELD_2></EIS_RATE_FIELD_2>
 <EIS_RATE_FIELD_2></EIS_RATE_FIELD_2>

1 个答案:

答案 0 :(得分:0)

请勿使用xsl:for-each。删除它但保留xsl:choose及其内容。然后使用以下行替换xsl:when行:

<xsl:when test="pctList/e[hotelID = 10079]">

这将只生成一行:如果没有酒店ID为10079 ,则为空EIS_RATE_FIELD_2元素,如果有,则为,然后该元素将包含文本“SPECIAL RATE”。 / p>