【问题标题】:I need to create a number range of 0001-9999 in xsl [closed]我需要在 xsl 中创建一个 0001-9999 的数字范围 [关闭]
【发布时间】:2017-03-11 17:19:16
【问题描述】:

好吧,伙计们,我正在使用 magento 2。我有一个模块可以让我将产品订单导出到另一台服务器。服务器需要一个特定的“sequence_id”。这个序列 id 不是 magento 的一部分,所以我需要以某种方式创建它,我迷路了。

基本上它必须是 4 位数字。它可以从 0001 到 9999 然后重复。它需要有前面的零。

我有一个来自 magento 的值“订单增量 ID”,但它大约 7 个字符长,并且不会在 9999 处重置。

有谁知道我如何在 XSL 中实现这一点???

提前致谢!

【问题讨论】:

  • 你的问题不清楚。请发布输入和预期输出的小示例 - 请参阅:minimal reproducible example
  • 问题是我没有当前代码可以显示。基本上我需要我的文件名,另一个字段是一个从 0001-9999 递增的数字我的文本输出类似于:值 1;值 2;值 3;0001
  • 您知道如何为输入中的每个项目生成 any 值吗?如果是,您可以(可能)使用<xsl:value-of select="format-number(position(), '0000')"/>。如果您期望超过 9999 个项目,则使用 <xsl:value-of select="format-number(position() mod 1000, '0000')"/> 在 9999 之后回滚到 0。-这是假设这里的目的是用序列号标记您的项目-从您的问题中不清楚(因为不清楚如果允许重复,这有什么意义)。

标签: xml magento xslt


【解决方案1】:

假设 XSLT 2.0 您可以选择1 to 9999,然后使用format-number

   <xsl:for-each select="1 to 9999">
        <number>
            <xsl:value-of select="format-number(., '0000')"/>
        </number>
    </xsl:for-each>

http://xsltransform.net/ncntCTg

【讨论】:

  • 不幸的是,我怀疑您的假设是否正确:Magento -> PHP -> XSLT 1.0。
  • 那行不通。错误:请修复此配置文件的 XSL 模板。处理 XSL 模板时出现问题:第 0 行(错误代码:1207):无效表达式第 0 行(错误代码:1):编译错误:元素 for-each 第 0 行(错误代码:1):xsl:for-each : 无法编译选择表达式 '1 to 9999'
  • 该代码是 XSLT 2.0 并且适用于任何 XSLT 2.0 处理器。如果 Magento 只公开一个 XSLT 1.0 处理器,那么您就不能使用这种方法。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2011-01-31
相关资源
最近更新 更多