我在BaseX数据库中存储了大量的数学公式作为Content MathML。为了加快使用作为XQuery表达式实现的不同搜索算法的查找,我想访问主表的值,尤其是PRE,DISTANCE和SIZE。计划是去掉所有提供子树总节点数量(SIZE)错误的子树。
PRE值可通过db:node-pre函数获得,并且正常工作。如何访问DISTANCE和SIZE值?我在文档中找不到方法。
答案 0 :(得分:0)
如果您确实需要这些ID,请使用parent::node()
和following-sibling::node()[1]
轴并查询其前值。以下等式保持:
PRE(.) = PRE(parent) + SIZE(parent)
PRE(following-sibling[1]) = PRE(.) + SIZE(.)
因此您可以通过重新排序这些方程式来在恒定时间内读取这些值。
你会接触核心(可能不应该,小猫可能会死!)。实现BaseX Java绑定以访问queryContext
variable,并保持database context context
,您可以查询data()
reference:
Data data = queryContext.context.data();
获得Data
引用后,您可以访问多个函数来查询内部数据结构的值:
int Data.dist(int pre, int kind)
int Data.size(int pre, int kind)
其中kind
is always 1
for element nodes。
勇敢,注意你的脚步,你现在就离开安全的地方了!