我在确定节点集的正确上下文时遇到了一些麻烦.我有一个看起来有点像这样的模板匹配(使用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作为该值.所以,我对于正在发挥作用的立场感到难过.任何人都可以开导我吗?
当我登录到 Azure 门户时,我遇到了类似于 Azure Function 计时器运行两次的情况 ,但到目前为止,那里的解决方案对我不起作用。
我的函数(用 Node 编写)在计时器上运行(每 15 分钟一次)。在 Application Insights 和 Azure 门户监视器日志中,我每 15 分钟就会看到一次调用,正如预期的那样(可能是由于采样)。但是,输出发生了两次(我正在将记录写入 Cosmos 集合)。当我观看函数的实时日志时(在门户中,导航到函数代码并从屏幕底部拉出日志),我可以看到它运行了两次,非常接近。下面是示例日志。间隔重叠,所以我不认为这是 CRON 问题(但我不是 CRON 专家)。
我确实考虑过 runOnStartup。我不确定这是否默认为 false,因此我将其设置为 false 并重新启动。重启后同样问题。(我仍然对此表示怀疑,因为一分钟计时器上的类似功能应用程序按预期运行)。
我还尝试过从门户手动运行该功能。当我这样做时,它只运行一次。
提供 Azure 函数 github wiki 上请求的信息:
提供两个从紧密相连的开始 -
地区:美国东部
调用 ID:4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c
显示两个重叠调用的示例日志记录(为简单起见,对实际日志文本进行了轻微编辑):
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 [信息] …