xPath jsel 库中的表达式问题
Problem with expression in xPath jsel library
我对 jsel 有疑问,jsel 是一个使用 xPath 表达式计算数据的库。
我正在尝试验证此表达式:'//Pregnancy != true()' 针对数据对象,我的结果始终为 false。例如,表达式 '//Sex != "f"' 很完美。我正在为 jsel dom 对象使用自定义架构。问题是,如果怀孕是 'false' 或假或空,为什么 '//Pregnancy != true()' 永远不会 returns true?
const data = {
"DoBirth": {
"value": null,
"unit": null,
"isUnknown": false
},
"Sex": {
"value": "m",
"unit": null,
"isUnknown": false
},
"Pregnancy": {
"value": false,
"unit": null,
"isUnknown": false,
}
}
const schema = {
nodeValue: function (node) {
if (node['value'] != undefined) {
return node['value'];
}
return node;
}
}
const dom = jsel(formData);
dom.schema(schema)
const result = dom.select('//Pregnancy != true()')
//result = always false
在 XPath 1.0 中,//Pregnancy != true()
将节点集与布尔值进行比较,该比较的规则是它表示 boolean(//Pregnancy) != true()
,仅当没有怀孕元素时才为真在文档中。
我实际上不知道 JSEL 如何将您的 Javascript 对象映射到 XML,但我想使用字符串 "true"
比使用布尔值 [=] 更可靠13=].
您还需要注意,在 XPath 中,如果 Sex
元素的值不是“f”,则 //Sex != "f"
为真。如果没有值为“f”的 Sex
元素,则您更可能需要 not(//Sex = "f")
。
我对 jsel 有疑问,jsel 是一个使用 xPath 表达式计算数据的库。 我正在尝试验证此表达式:'//Pregnancy != true()' 针对数据对象,我的结果始终为 false。例如,表达式 '//Sex != "f"' 很完美。我正在为 jsel dom 对象使用自定义架构。问题是,如果怀孕是 'false' 或假或空,为什么 '//Pregnancy != true()' 永远不会 returns true?
const data = {
"DoBirth": {
"value": null,
"unit": null,
"isUnknown": false
},
"Sex": {
"value": "m",
"unit": null,
"isUnknown": false
},
"Pregnancy": {
"value": false,
"unit": null,
"isUnknown": false,
}
}
const schema = {
nodeValue: function (node) {
if (node['value'] != undefined) {
return node['value'];
}
return node;
}
}
const dom = jsel(formData);
dom.schema(schema)
const result = dom.select('//Pregnancy != true()')
//result = always false
在 XPath 1.0 中,//Pregnancy != true()
将节点集与布尔值进行比较,该比较的规则是它表示 boolean(//Pregnancy) != true()
,仅当没有怀孕元素时才为真在文档中。
我实际上不知道 JSEL 如何将您的 Javascript 对象映射到 XML,但我想使用字符串 "true"
比使用布尔值 [=] 更可靠13=].
您还需要注意,在 XPath 中,如果 Sex
元素的值不是“f”,则 //Sex != "f"
为真。如果没有值为“f”的 Sex
元素,则您更可能需要 not(//Sex = "f")
。