XSLT выбрать, выбрав неправильное значение - PullRequest
0 голосов
/ 30 мая 2018

Когда myNode равно строке none, мой оператор выбора вернет 29, а не 99.

Если я удалю тест для строки site-deploy, оператор выбора вернет 99.

<xsl:choose>
    <xsl:when test="myNode = 'site-deploy'"><xsl:text>29</xsl:text></xsl:when>
    <xsl:when test="myNode = 'none'"><xsl:text>99</xsl:text></xsl:when>
    <xsl:otherwise><xsl:text>100</xsl:text></xsl:otherwise>
</xsl:choose>

1 Ответ

0 голосов
/ 30 мая 2018

Я предполагаю, что у вас есть несколько myNode элементов в вашем XML под одним и тем же родителем.Например,

<nodes>
   <myNode>none</myNode>
   <myNode>site-deploy</myNode>
</nodes>

Теперь, когда вы делаете тест формы myNode = 'site-deploy', на самом деле проверяется, существует ли какой-либо узел с именем myNode, имеющий текст «site-deploy».Другими словами, он проверяет все myNode элементов, а не только первый.

Способ решения зависит от того, чего вы пытаетесь достичь.Например, может быть что-то вроде этого

<xsl:for-each select="myNode">
  <myNode>
    <xsl:choose>
      <xsl:when test=". = 'site-deploy'"><xsl:text>29</xsl:text></xsl:when>
      <xsl:when test=". = 'none'"><xsl:text>99</xsl:text></xsl:when>
      <xsl:otherwise><xsl:text>100</xsl:text></xsl:otherwise>
    </xsl:choose>
  </myNode>
</xsl:for-each>

Обратите внимание, если вы просто хотите проверить первый myNode, вы бы сделали myNode[1] = 'site-deploy'

...