XML 到 Excel 的 XSL:在公式中使用大括号

XSL for XML to Excel: Using a Curly Bracket in Formula

如何在从 XML 生成 Excel 文件的 XSL 中使用大括号?

我可以用 Excel 公式完成我想要的,但它需要使用大括号列表,如:

    =LOOKUP(XXXX, {"NA","NF","NR","O"},{"NA","Completed","NR","Ongoing"}

即使在括号和逗号中使用 HTML 指示符,我也无法让 XSL 接受,但在第一个大括号后的第一个逗号处仍然出现错误。

    =LOOKUP(XXXX,{"NA","NF","NR","O"},{"NA","Completed","NR","OngoingNA"})

&123; = {
&#$$; = , (comma)

但是我在第一个命令中收到 XML 错误:“预期令牌‘{’找到‘,’。

    =LOOKUP(XXXX,{"NA"-->,<--"NF,"NR","O"},{"NA","Completed","NR","Ongoing","NA"})

我猜 (!) 您正在尝试创建一个 文字结果元素 ,其属性包含花括号。这是有问题的,因为花括号被解释为 属性值模板 - 即 XSLT 处理器试图评估其中包含的表达式。

为避免这种情况,您必须通过将大括号加倍来转义大括号,或者使用 xsl:attribute 指令将值指定为文本。例如,两者:

<elem attr="=SUM({{1,2}}*{{4,5}})"/>

和:

<elem>
    <xsl:attribute name="attr">=SUM({1,2}*{4,5})</xsl:attribute>
</elem>

将return得到相同的结果:

<elem attr="=SUM({1,2}*{4,5})"/>