You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TWIG中如何转义单引号?FILENAME含单引号致XPath语法错误

解决TWIG中XPath包含单引号的转义问题

问题本质

你的TWIG代码里,当#FILENAME#包含单引号(比如08 - Fiche d'option.pdf)时,代入后会直接破坏XPath的字符串语法——XPath用单引号包裹字符串时,内部的单引号会提前闭合参数,导致TWIG解析报错。

正确处理方案

核心思路是按照XPath规范转义单引号:XPath中,单引号包裹的字符串内部若出现单引号,需要用两个连续单引号来转义。结合TWIG的语法特性,具体实现如下:

修改后的代码

{% set processed_filename = '#FILENAME#'|replace({"'": "''"}) %}
{% if xpath('md_file', '//Archive/DOSSIER_MDPH[contains(\'' ~ processed_filename ~ '\', Identifiant)]') %}
    {{ xpath('md_file', '//Archive/DOSSIER_MDPH[contains(\'' ~ processed_filename ~ '\', Identifiant)]/Personne/LIBLDOMA') }}
{% endif %}

关键步骤说明

  1. 预处理文件名:用TWIG的replace过滤器,把文件名里的单个单引号'替换成两个单引号'',满足XPath的转义要求。
  2. 拼接合法的XPath字符串:用~拼接TWIG变量与XPath模板,同时用\'转义包裹XPath的外层单引号,避免语法冲突。
  3. 弃用实体引用:原来的"会引入额外的实体解析问题,直接用转义单引号包裹XPath字符串更可靠。

效果验证

当#FILENAME#为08 - Fiche d'option.pdf时,预处理后变量值变为08 - Fiche d''option.pdf,最终生成的XPath表达式为:

//Archive/DOSSIER_MDPH[contains('08 - Fiche d''option.pdf', Identifiant)]

该表达式完全符合XPath语法规范,不会触发解析错误。

内容的提问来源于stack exchange,提问作者Pick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:55:19