xslt - 以 xsl 参数为参数的 XSL 函数
问题描述
我会尽量在这里保持术语清晰,术语的重载使这变得复杂。
我有一个转换,我正在传递一个属性来填充 xsl:param,这是有效的
<xsl:param name="platform"/>
如果我使用,这将打印出来
<xsl:value-of select='$platform'/>
我需要将其传递给函数,而不是打印此属性/参数。我努力了
<xsl:value-of select="replace(current(),'replaceMe','$platform')"/>
我收到错误
replace() 中的替换字符串无效:$ 符号后必须跟数字 0-9
有没有办法可以将参数传递给函数?
如果是这样,我需要如何格式化它?
解决方案
你的意思是
<xsl:value-of select="replace(current(), 'replaceMe', $platform)" />
逻辑结论:一旦$platform
变量意外包含 a ,您将再次看到相同的错误,而意外包含无效的正则表达式$
时会出现另一个错误。'replaceMe'
如果它恰好是一个有效的正则表达式并且您不知道它,您可能会看到其他意外行为。
因此 - 如果你想用变量进行逐字搜索和替换 - 你必须正确地对搜索模式中的所有特殊字符进行正则表达式转义,并且至少在替换字符串中转义任何$
和。\
一个健壮的“逐字”替换调用如下所示:
replace(
$subject,
replace($searchString, '[.\[\]\\|^$?*+{}()-]','\\$0'),
replace($replacement, '[\\$]', '\\$0')
)
推荐阅读
- scala - Avro 向后兼容性无法按预期工作
- deep-learning - 用于图像分类的图神经网络
- visual-studio-code - 在 vscode 中,lint 错误显示在问题中,但是当鼠标悬停红色波浪时,lint 错误消息不显示
- asp.net - 以编程方式将 asp.net 请求发送到第 3 方服务器?
- jupyter-notebook - 无法启动 Jupyter 笔记本
- c++ - 为什么在我的代码中私有数据成员不可访问?
- mysql - 如何在 MySQL 查询和 Python 中使用 WHERE & AND
- javascript - 当使用 minDate 和/或 maxDate 启用 showYearDropdown 时,如何防止出现或选择超出范围的年份
- html - Angular Material:在不指定宽度的情况下将自定义 sidenav 从长格式转换为图标
- javascript - 从对象数组中的每个对象中删除对象