Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xsl:when在XSLT中测试条件_Xslt_Xslt 1.0 - Fatal编程技术网

使用xsl:when在XSLT中测试条件

使用xsl:when在XSLT中测试条件,xslt,xslt-1.0,Xslt,Xslt 1.0,我有下面的xsl标记,在其中提取fpml:period乘数和fpml:period的值,如下所示。。。 xml中的标记为:- <fpml:periodMultiplier>1</fpml:periodMultiplier> <fpml:period>Y</fpml:period> 1 Y 在xsl中提取,如下所示 <Payindextenor> <xsl:value-of select="../fpml:calculation

我有下面的xsl标记,在其中提取fpml:period乘数和fpml:period的值,如下所示。。。 xml中的标记为:-

<fpml:periodMultiplier>1</fpml:periodMultiplier>
<fpml:period>Y</fpml:period>
1
Y
在xsl中提取,如下所示

<Payindextenor>
<xsl:value-of select="../fpml:calculationPeriodDates
                        /fpml:calculationPeriodFrequency
                        /fpml:periodMultiplier" />
<xsl:value-of select="../fpml:calculationPeriodDates
                        /fpml:calculationPeriodFrequency
                        /fpml:period" />
</Payindextenor>

所以Payindextenor的值是1Y

现在我想在这个标记中加上null检查,因为在即将到来的xml中,fpml:period乘数和fpml:period也可能没有值

因此,我提出了以下xsl实现,其中我尝试过,如果任何值为null,那么它应该打印null,请告知它是否正确:-

<xsl:choose>
  <xsl:when test="../fpml:calculationPeriodDates
                    /fpml:calculationPeriodFrequency
                    /fpml:periodMultiplier
                  != ' ' 
                  and 
                  ../fpml:calculationPeriodDates
                    /fpml:calculationPeriodFrequency
                    /fpml:period 
                  != ' '">
    <xsl:value-of select="../fpml:calculationPeriodDates
                             /fpml:calculationPeriodFrequency
                            /fpml:periodMultiplier" />
   <xsl:value-of select="../fpml:calculationPeriodDates
                           /fpml:calculationPeriodFrequency
                           /fpml:period" />
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="'null'" />
  </xsl:otherwise>
</xsl:choose>

正如Ian Roberts所说,将节点与单个空间进行比较与检查“null”非常不同,但假设您希望在
periodMultiplier
period
均为空时显示“null”,则可以执行以下操作:

<xsl:variable name="freq" 
         select="../fpml:calculationPeriodDates/fpml:calculationPeriodFrequency" />
<xsl:choose>
  <xsl:when test="$freq/fpml:periodMultiplier != '' or 
                  $freq/fpml:period != ''">
    <xsl:value-of select="$freq/fpml:periodMultiplier" />
    <xsl:value-of select="$freq/fpml:period" />
  </xsl:when>
  <xsl:otherwise>
      <xsl:text>null</xsl:text>
  </xsl:otherwise>
</xsl:choose>

无效的

正如Ian Roberts所说,将节点与单个空间进行比较与检查“null”非常不同,但假设您希望在
periodMultiplier
period
均为空时显示“null”,则可以执行以下操作:

<xsl:variable name="freq" 
         select="../fpml:calculationPeriodDates/fpml:calculationPeriodFrequency" />
<xsl:choose>
  <xsl:when test="$freq/fpml:periodMultiplier != '' or 
                  $freq/fpml:period != ''">
    <xsl:value-of select="$freq/fpml:periodMultiplier" />
    <xsl:value-of select="$freq/fpml:period" />
  </xsl:when>
  <xsl:otherwise>
      <xsl:text>null</xsl:text>
  </xsl:otherwise>
</xsl:choose>

无效的

正如Ian Roberts所说,将节点与单个空间进行比较与检查“null”非常不同,但假设您希望在
periodMultiplier
period
均为空时显示“null”,则可以执行以下操作:

<xsl:variable name="freq" 
         select="../fpml:calculationPeriodDates/fpml:calculationPeriodFrequency" />
<xsl:choose>
  <xsl:when test="$freq/fpml:periodMultiplier != '' or 
                  $freq/fpml:period != ''">
    <xsl:value-of select="$freq/fpml:periodMultiplier" />
    <xsl:value-of select="$freq/fpml:period" />
  </xsl:when>
  <xsl:otherwise>
      <xsl:text>null</xsl:text>
  </xsl:otherwise>
</xsl:choose>

无效的

正如Ian Roberts所说,将节点与单个空间进行比较与检查“null”非常不同,但假设您希望在
periodMultiplier
period
均为空时显示“null”,则可以执行以下操作:

<xsl:variable name="freq" 
         select="../fpml:calculationPeriodDates/fpml:calculationPeriodFrequency" />
<xsl:choose>
  <xsl:when test="$freq/fpml:periodMultiplier != '' or 
                  $freq/fpml:period != ''">
    <xsl:value-of select="$freq/fpml:periodMultiplier" />
    <xsl:value-of select="$freq/fpml:period" />
  </xsl:when>
  <xsl:otherwise>
      <xsl:text>null</xsl:text>
  </xsl:otherwise>
</xsl:choose>

无效的

这与中的情况完全相同-您正在与包含单个空格的(非空)字符串进行比较,而实际需要的是检查空字符串。您可以使用我为该问题建议的相同解决方案,并使用
规范化空格
(将空字符串和仅包含空格的字符串视为“false”,其他任何内容视为“true”)进行测试:



这将处理缺少
fpml:periodMultiplier
fpml:period
元素的情况,以及它们存在但为空的情况。

这与中的情况完全相同-与包含单个空格的(非空)字符串
'
进行比较,当您真正想要的是检查空字符串时。您可以使用我为该问题建议的相同解决方案,并使用
规范化空格
(将空字符串和仅包含空格的字符串视为“false”,其他任何内容视为“true”)进行测试:



这将处理缺少
fpml:periodMultiplier
fpml:period
元素的情况,以及它们存在但为空的情况。

这与中的情况完全相同-与包含单个空格的(非空)字符串
'
进行比较,当您真正想要的是检查空字符串时。您可以使用我为该问题建议的相同解决方案,并使用
规范化空格
(将空字符串和仅包含空格的字符串视为“false”,其他任何内容视为“true”)进行测试:



这将处理缺少
fpml:periodMultiplier
fpml:period
元素的情况,以及它们存在但为空的情况。

这与中的情况完全相同-与包含单个空格的(非空)字符串
'
进行比较,当您真正想要的是检查空字符串时。您可以使用我为该问题建议的相同解决方案,并使用
规范化空格
(将空字符串和仅包含空格的字符串视为“false”,其他任何内容视为“true”)进行测试:



这将处理
fpml:period乘数
fpml:period
元素不存在的情况,以及它们存在但为空的情况。

您所说的“为空”到底是什么意思?此代码正在检查目标值是否等于包含单个空格的字符串,该字符串将因缺少元素或带有(完全)空格的元素而失败空值。@IanRoberts让我们假设该值以类似于@IanRoberts的xml形式出现,因此如上面的注释所示,如果这两个标记的输入xml中没有值,那么如果要测试具有空字符串值的元素,为什么要与非空字符串(
'
)进行比较你的问题有两个有效的答案。请接受其中一个。你所说的“为空”到底是什么意思?此代码正在检查目标值是否等于包含单个空格的字符串,该字符串将因缺少元素或带有(完全)空格的元素而失败空值。@IanRoberts让我们假设该值以类似于@IanRoberts的xml形式出现,因此如上面的注释所示,如果这两个标记的输入xml中没有值,那么如果要测试具有空字符串值的元素,为什么要与非空字符串(
'
)进行比较你的问题有两个有效的答案。请接受其中一个。你所说的“为空”到底是什么意思?此代码正在检查目标值是否等于包含单个空格的字符串,该字符串将因缺少元素或带有(完全)空格的元素而失败空值。@IanRoberts让我们假设该值以类似@IanRoberts的xml形式出现,如上面的注释所示,如果这两个标记的输入xml中没有值,那么如果要测试具有空字符串值的元素,为什么要与非空字符串(
'