检查 Saxon-JS 2.1 是否 DOM classList 包含特定的 class
Check with Saxon-JS 2.1 if a DOM classList contains a specific class
Saxon-JS 不仅可以在浏览器中 运行 XSLT,还可以读写 HTML 内容。使用 JavaScript,可以通过
检查 class 'edited' 是否包含在元素 class 列表中
document.getElementById(id).classList.contains('edited')
但是如何使用 Saxon-JS 2.1 实现这一点?
可能的方法似乎是
ixsl:get($node, 'class')
但我不知道如何通过 id 指定节点(这将 return 整个 class 列表)
ixsl:eval('document.getElementById({$id}).classList.contains('edited')')
但我认为不支持使用 {$id} 并且 'edited' 使用已经用于包含 eval 参数和整个 xpath 语句(此处未包含)的撇号).所以不能同时使用单撇号和双撇号。
ixsl:eval(document.getElementById('+$id+').classList.contains('+$class+')')
在这里我收到一条错误消息,指出“没有为 xs:string 类型的参数定义算术运算符”。
ixsl:eval(concat('document.getElementById(',$id,').classList.contains(',$class,')'))
但即使这样也行不通。它被编译成 sef,但在 运行 时发生错误“无法读取 属性 of null”。
我知道我可以在 HTML 页面中编写一个 JavaScript 函数并调用它自己的函数,但我想在 XSLT 脚本中完成它。
如果您想要 return 任何符合该条件的 XML 元素,您可以只使用标准的 XPath 表达式:
//*[@id eq $id][contains-token(@class, 'edited')]
Saxon-JS 不仅可以在浏览器中 运行 XSLT,还可以读写 HTML 内容。使用 JavaScript,可以通过
检查 class 'edited' 是否包含在元素 class 列表中document.getElementById(id).classList.contains('edited')
但是如何使用 Saxon-JS 2.1 实现这一点?
可能的方法似乎是
ixsl:get($node, 'class')
但我不知道如何通过 id 指定节点(这将 return 整个 class 列表)
ixsl:eval('document.getElementById({$id}).classList.contains('edited')')
但我认为不支持使用 {$id} 并且 'edited' 使用已经用于包含 eval 参数和整个 xpath 语句(此处未包含)的撇号).所以不能同时使用单撇号和双撇号。
ixsl:eval(document.getElementById('+$id+').classList.contains('+$class+')')
在这里我收到一条错误消息,指出“没有为 xs:string 类型的参数定义算术运算符”。
ixsl:eval(concat('document.getElementById(',$id,').classList.contains(',$class,')'))
但即使这样也行不通。它被编译成 sef,但在 运行 时发生错误“无法读取 属性 of null”。
我知道我可以在 HTML 页面中编写一个 JavaScript 函数并调用它自己的函数,但我想在 XSLT 脚本中完成它。
如果您想要 return 任何符合该条件的 XML 元素,您可以只使用标准的 XPath 表达式:
//*[@id eq $id][contains-token(@class, 'edited')]