微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Saxon-JS 2.1 检查 DOM classList 是否包含特定类

如何解决使用 Saxon-JS 2.1 检查 DOM classList 是否包含特定类

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 语句(此处不包括在内)。所以不能同时使用单撇号和双撇号。

ixsl:eval(document.getElementById('+$id+').classList.contains('+$class+')') 此处出现错误,指出“未为 xs:string 类型的参数定义算术运算符”。

ixsl:eval(concat('document.getElementById(',$id,').classList.contains(',$class,')')) 但即使这样也不起作用。它被编译成 sef,但在运行时出现错误“无法读取 null 的属性”。

我知道我可以将 JavaScript 函数写入 HTML 页面调用自己的函数,但我想在 XSLT 脚本中完成它。

解决方法

如果您想返回与该条件匹配的任何 XML 元素,您可以使用标准的 XPath 表达式:

//*[@id eq $id][contains-token(@class,'edited')]

见:Apps Script at Stack Overflow

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。