Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Xml 如何在xslt中使用if逻辑_Xml_Object_Xslt_If Statement - Fatal编程技术网

Xml 如何在xslt中使用if逻辑

Xml 如何在xslt中使用if逻辑,xml,object,xslt,if-statement,Xml,Object,Xslt,If Statement,我有一个xslt,它接受并格式化xml,在我的代码中,我希望在链接元素不存在的情况下对逻辑进行编程。在这种情况下,我只想写出来的标题没有链接。但我没有让它发挥作用,也许有更好的方法。请参阅代码片段: 编辑:添加了xml,并且如果是空的,并且是相同的测试,因为我不知道如何修复 xsl:if test=..语句的语法错误。这里它不是一个字符串测试,而是一个元素测试,因此它将尝试查找一个名为的元素,该元素在XML中实际上是一个无效的元素名 您可以简单地用 如果要测试的选项不止一个,则可以在两个序列中

我有一个xslt,它接受并格式化xml,在我的代码中,我希望在链接元素不存在的情况下对逻辑进行编程。在这种情况下,我只想写出来的标题没有链接。但我没有让它发挥作用,也许有更好的方法。请参阅代码片段:

编辑:添加了xml,并且如果是空的,并且是相同的测试,因为我不知道如何修复


xsl:if test=..语句的语法错误。这里它不是一个字符串测试,而是一个元素测试,因此它将尝试查找一个名为
的元素,该元素在XML中实际上是一个无效的元素名

您可以简单地用

如果要测试的选项不止一个,则可以在两个
序列中链接它们,但必须记住在两个语句中插入所有选项,否则可能会得到双输出
title
。更通用的解决方案是使用选项列表:

<xsl:template match="movie">
<td>
  <xsl:choose>
    <xsl:when test="normalize-space(link)">
        <!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
        <a href="{link}" target="_blank">
        <xsl:value-of select="title" />
        </a>
    </xsl:when>

    <xsl:otherwise>
        <xsl:value-of select="title" />
    </xsl:otherwise>
  </xsl:choose>
</td>
</xsl:template>


您可以为每个案例添加
行,只有当它们都不匹配时,才会自动进入默认的
,否则
操作只会写出标题。

您的输入看起来像什么?我希望
link[=]
是一个元素或属性,而不是文本。(顺便说一句,你的尝试失败的原因是你做了两次完全相同的测试。)@Jongware我在那里添加了一些信息,希望能有所帮助。
<xsl:if test="not(link)">there is no child element called "link"</xsl:if>
<link></link>
<link>
</link>
<xsl:template match="movie">
<td>
  <xsl:if test="normalize-space(link)">
    <!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
    <a href="{link}" target="_blank">
      <xsl:value-of select="title" />
    </a>
  </xsl:if>

  <xsl:if test="not(normalize-space(link))">
    <xsl:value-of select="title" />
  </xsl:if>
</td>
</xsl:template>
<xsl:template match="movie">
<td>
  <xsl:choose>
    <xsl:when test="normalize-space(link)">
        <!-- Look for link, target to blank, the link text is the tittle pulled from xml -->
        <a href="{link}" target="_blank">
        <xsl:value-of select="title" />
        </a>
    </xsl:when>

    <xsl:otherwise>
        <xsl:value-of select="title" />
    </xsl:otherwise>
  </xsl:choose>
</td>
</xsl:template>