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