小编Chr*_*ina的帖子

确定具有多个谓词的模板中position()的上下文

我在确定节点集的正确上下文时遇到了一些麻烦.我有一个看起来有点像这样的模板匹配(使用XSL 2.0):

<xsl:template match="//chapter/body/*[matches(name(), '^toc')][crossref][not(crossref/@idref='cip' or crossref/@idref='copy')]">
  <xsl:variable name="curr_id" select="crossref/@idref"/>
  <xsl:element name="location">
    <xsl:attribute name="id"><xsl:value-of select="$curr_id"/></xsl:attribute>
    <xsl:attribute name="order"><xsl:value-of select="position()"/></xsl:attribute>
    <xsl:element name="label">
        <text><xsl:value-of select="."/></text>
    </xsl:element>
  </xsl:element>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

XML看起来有点像这样:

<chapter id="toc">
  <body>
    <title>Contents</title>
    <tocfm><crossref idref="cip">Catalog</crossref></tocfm>
    <tocfm><crossref idref="copy">Copyright</crossref></tocfm>
    <tocfm><crossref idref="ded">Dedication</crossref></tocfm>
    <toc><crossref idref="prologue">Prologue</crossref></toc>
    <toc><crossref idref="pt1">Book One</crossref></toc>
    <toc><crossref idref="pt2">Book Two</crossref></toc>
    <toc><crossref idref="pt3">Book Three</crossref></toc>
  </body>
</chapter>
Run Code Online (Sandbox Code Playgroud)

我的期望是谓词将生成一个包含以下内容的节点集:

<tocfm><crossref idref="ded">Dedication</crossref></tocfm>
<toc><crossref idref="prologue">Prologue</crossref></toc>
<toc><crossref idref="pt1">Book One</crossref></toc>
<toc><crossref idref="pt2">Book Two</crossref></toc>
<toc><crossref idref="pt3">Book Three</crossref></toc>
Run Code Online (Sandbox Code Playgroud)

换句话说,所有包含crossref的toc类元素,其idref不是cip或copy.模板在输出方面执行此操作,但位置函数似乎不在该节点集上.相反,它为奉献产生了一个'3'的位置.但是,如果我输出通过跟随[1]的谓词找到的节点的值,我会得到Dedication作为该值.所以,我对于正在发挥作用的立场感到难过.任何人都可以开导我吗?

xslt predicate xslt-2.0

5
推荐指数
1
解决办法
1839
查看次数

定时器触发器运行两次的 Azure 函数

当我登录到 Azure 门户时,我遇到了类似于 Azure Function 计时器运行两次的情况 ,但到目前为止,那里的解决方案对我不起作用。

我的函数(用 Node 编写)在计时器上运行(每 15 分钟一次)。在 Application Insights 和 Azure 门户监视器日志中,我每 15 分钟就会看到一次调用,正如预期的那样(可能是由于采样)。但是,输出发生了两次(我正在将记录写入 Cosmos 集合)。当我观看函数的实时日志时(在门户中,导航到函数代码并从屏幕底部拉出日志),我可以看到它运行了两次,非常接近。下面是示例日志。间隔重叠,所以我不认为这是 CRON 问题(但我不是 CRON 专家)。

我确实考虑过 runOnStartup。我不确定这是否默认为 false,因此我将其设置为 false 并重新启动。重启后同样问题。(我仍然对此表示怀疑,因为一分钟计时器上的类似功能应用程序按预期运行)。

我还尝试过从门户手动运行该功能。当我这样做时,它只运行一次。

提供 Azure 函数 github wiki 上请求的信息:

  1. 我正在使用消费计划
  2. 不确定需要多少信息 - 我们使用 Azure DevOps 管道和 Kudu。
  3. v2(预览版)运行时
  4. 未设置 WEBSITE_TIME_ZONE
  5. 我的 CRON 表达式:0 */15 * * * * 我对其含义的期望:函数应每 15 分钟运行一次。
  6. 不适用
  7. 提供两个从紧密相连的开始 -

    • 调用 ID:4e142315-60e3-420d-b71a-9990683ba5aa
    • 调用日期时间:2019-04-18T17:45:00.0044464+00:00
    • 地区:美国东部

    • 调用 ID:4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c

    • 调用日期时间:2019-04-18T17:45:00.0131739+00:00
    • 地区:美国东部

显示两个重叠调用的示例日志记录(为简单起见,对实际日志文本进行了轻微编辑):

2019-04-18T17:45:00.004 [信息] 执行“Functions.unassignDriverPermits”(原因=“计时器于 2019-04-18T17:45:00.0044464+00:00 触发”,Id=4e142315-60e3-420d-b71a- 9990683ba5aa)

2019-04-18T17:45:00.013 [信息] …

azure crontrigger azure-functions

3
推荐指数
1
解决办法
3570
查看次数

标签 统计

azure ×1

azure-functions ×1

crontrigger ×1

predicate ×1

xslt ×1

xslt-2.0 ×1