Saxon-JS不仅支持在浏览器中运行XSLT,还支持读写HTML内容。使用JavaScript,可以通过以下方法检查元素类列表中是否包含一个“已编辑”的类
document.getElementById(id).classList.contains('edited')但是如何使用Saxon-JS 2.1实现这一点呢?
可能的方法似乎是
ixsl:get($node, 'class'),但我不知道如何通过id指定节点(这将返回整个类列表)
ixsl:eval('document.getElementById({$id}).classList.contains('edited')'),但我认为使用{$id}是不受支持的,‘编辑’使用的撇号已经用于包含eval参数和整个xpath语句(这里不包括)的撇号。所以单引号和双撇号都不能使用。
在这里,我得到了一个错误,声明“没有为xs:ixsl:eval(document.getElementById('+$id+').classList.contains('+$class+')')类型的参数定义算术运算符”。
ixsl:eval(concat('document.getElementById(',$id,').classList.contains(',$class,')')),但即使这样也不起作用。它被编译成sef,但在运行时出现错误"cannot read property of null“。
我知道我可以在HTML页面中编写一个JavaScript函数并调用自己的函数,但我希望在XSLT脚本中完成它。
发布于 2021-05-04 05:49:03
如果想要返回符合该条件的任何XML元素,只需使用标准的XPath表达式:
//*[@id eq $id][contains-token(@class, 'edited')]https://stackoverflow.com/questions/67374605
复制相似问题