rendered paste bodyupdateExpr [PathExpr path]
returns [Expression step]
throws XPathException, PermissionDeniedException, EXistException
{
}:
#( updateAST:"update"
{
PathExpr p1 = new PathExpr(context);
PathExpr p2 = new PathExpr(context);
int type;
int position = Insert.INSERT_APPEND;
}
(
"replace" { type = 0; }
|
"value" { type = 1; }
|
"insert"{ type = 2; }
|
"delete" { type = 3; }
|
"rename" { type = 4; }
|
"batch start" { type = 5; }
|
"batch finish" { type = 6; }
)
step=expr [p1]
(
"preceding" { position = Insert.INSERT_BEFORE; }
|
"following" { position = Insert.INSERT_AFTER; }
|
"into" { position = Insert.INSERT_APPEND; }
)?
( step=expr [p2] )?
{
AbstractExpression mod = null;
if (type == 0)
mod = new Replace(context, p1, p2);
else if (type == 1)
mod = new Update(context, p1, p2);
else if (type == 2)
mod = new Insert(context, p2, p1, position);
else if (type == 3)
mod = new Delete(context, p1);
else if(type == 4)
mod = new Rename(context, p1, p2);
else if(type == 5)
mod = new BatchStart(context);
else if(type == 6)
mod = new BatchFinish(context);
if(mod != null)
{
mod.setASTNode(updateAST);
path.add(mod);
step = mod;
}
}
)
;