XPath是否支持else-if语句?

时间:2018-01-14 18:02:36

标签: xml xslt xpath

最近,我使用XSLT编写了一些个人程序。我很惊讶XPATH有'if then else'语句,没有'else if'。

例如,我只能使用:

if *** then ***
else ***

但我无法使用:

if *** then ***
else if *** then ***
else ***

XPath是否支持else-if语句?模拟else-if的唯一方法是嵌套if else?

2 个答案:

答案 0 :(得分:2)

表达式,如

const myData = [{
  name: 'some name',
  id: 1
}, {
  name: 'some name2',
  id: 2
}, {
  name: 'some name3',
  id: 3
}, {
  name: 'some name4',
  id: 4
}]

const filterProductsByCategoryId = (state, id) => {
	return state.find(c => c.id === id);
};

const result = filterProductsByCategoryId(myData, 2);
console.log(result);

在XPath 2.0中完全合法。

答案 1 :(得分:0)

您可以使用xsl:choose

  

xsl:choose元素从多个可能的元素中选择一个   备择方案。它由一个或多个xsl:when的序列组成   元素后跟可选的xsl:otherwise元素。每个xsl:when   element有一个属性test,它指定一个表达式。   xsl:whenxsl:otherwise元素的内容是一个序列   构造

     

处理xsl:choose元素时,每个xsl:when元素   依次测试(即按元素出现的顺序)   样式表),直到满足xsl:when个元素之一。如果   没有满足xsl:when元素,那么xsl:否则   如下所述,考虑元素。

<xsl:choose>
  <xsl:when test="expression1">
    ... some output ...
  </xsl:when>
  <xsl:when test="expression2">
    ... some output ...
  </xsl:when>
  <xsl:otherwise>
    ... some output ....
  </xsl:otherwise>
</xsl:choose>