【问题标题】:XSL 1.0 If not likeXSL 1.0 如果不喜欢
【发布时间】:2019-12-07 23:29:14
【问题描述】:

我正在使用 XSL 创建 PDF 文档模板,并且不希望在行值为零时显示某些字段。

我试过了

<xsl:if test="line_value != 0">
<xsl:with-param name="value" select="unit_quantity"/>
</xsl:if>

但这不起作用。我认为是因为 line_value 的格式为 £0.00。

我正在尝试让它执行line_value NOT LIKE '£0.00',但我认为这不是 XSL 的正确语法。

【问题讨论】:

  • 你不需要 NOT LIKE - not equal 应该像你想要的那样工作:test="line_value != '£0.00'"
  • 我认为问题在于xsl:with-param 不能嵌套在xsl:if 中。不过,您可以反转语句,然后执行&lt;xsl:with-param name="value"&gt;&lt;xsl:if test="line_value != 0"&gt;&lt;xsl:value-of select="unit_quantity" /&gt;&lt;/xsl:if&gt;&lt;/xsl:with-param&gt;(因此value 参数将为空,而line_value 为零)。
  • 您可以使用test="not(contains(line_value, "0.00'))"。 -- 注意xsl:with-param不能是xsl:if的孩子。

标签: xslt xslt-1.0


【解决方案1】:

我假设下面是您的 XML:

输入:

<?xml version="1.0" encoding="utf-8" ?>
<body>
    <line_value>£0.00</line_value>
    <line_value>£1.00</line_value>
    <line_value>£0.00</line_value>
    <line_value>£2.00</line_value>
    <line_value>£0.00</line_value>
    <line_value>£5.00</line_value>
    <line_value>£0.00</line_value>
    <line_value>£1.00</line_value>
</body>

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="1.0">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
        <root>
            <xsl:for-each select="body/line_value">
                <xsl:if test="number(translate(., '£', '')) != 0">
                    <num>
                        <xsl:value-of select="."/>
                    </num>
                </xsl:if>
            </xsl:for-each>
        </root>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2022-08-03
    • 2022-12-13
    相关资源
    最近更新 更多