【问题标题】:XSLT 2.0 if then如果是 XSLT 2.0
【发布时间】:2015-04-14 19:12:24
【问题描述】:

在 XSLT 2.0 中,我们可以使用 if then 仅表示没有 else 子句。 <Employee><Status><xsl:value-of select="if (tns:Employee/tns:EmpId = 4) then 'new' else 'old'"/></Status></Employee> 这里如果我不想要 else 子句,意味着如果 empid 不是 4,则不要填充 Status 字段。 xslt 是什么?

【问题讨论】:

  • 好吧,在谷歌搜索并仔细考虑之后:如果没有else值是多少?重新排序以避免这种情况。
  • “不填充状态字段”是指您想要一个空的<Status/> 还是根本不需要任何状态元素?
  • 和你的previous question有什么关系?为什么您会用不同的 XML 输入提出非常相似的问题?此外,您的一些较早的问题需要您注意:stackoverflow.com/q/29633276/1987598stackoverflow.com/q/22759983/1987598stackoverflow.com/q/24752681/1987598。要么接受他们的答案,要么对给出的答案做出反应。
  • 我不想要任何状态元素。

标签: xslt xslt-2.0


【解决方案1】:

除非我读错了问题,否则只需添加一个空字符串或空序列。

例子……

if (tns:Employee/tns:EmpId = 4) then 'new' else ''

if (tns:Employee/tns:EmpId = 4) then 'new' else ()

【讨论】:

  • 感谢您的回复。这将创建 但如果我不需要创建状态字段,解决方案是什么。
  • @user3480752 - 如果您根本不想要状态元素输出,您可以使用 xsl:if 就像 Tim C 建议的那样,或者您可以缩小您的原始范围加工。当您的问题不包含 XSLT 的完整示例时,很难给出示例。
【解决方案2】:

如果您根本不需要任何 status,您可以使用 XSLT 中的标准 xsl:if 轻松实现此目的(适用于所有版本)

<Employee>
    <xsl:if test="tns:Employee/tns:EmpId = 4">
      <Status>new</Status>
    </xsl:if>
</Employee>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多