@Override public Object execute(MapperContext ctx) { Element srcElement = null; Element startSrcElement = ScriptUtils.getStartElement(ctx); Path startfullPath = startSrcElement.getFormat().getFullPath(); if (path.toString().startsWith(startfullPath.toString())) { srcElement = startSrcElement; } else { Element rootSrcElement = ctx.getRootSourceElement(); Path rootFullPath = rootSrcElement.getFormat().getFullPath(); if (path.toString().startsWith(rootFullPath.toString())) srcElement = rootSrcElement; else throw new RuntimeException(String.format("Wrong path '%s'", path)); } Path currentPath = path.removeLeft(srcElement.getLevel() + 1); Element find = srcElement.getChildByPath(currentPath); if (find.getFormat().getType() != Type.NONE && find.getValue() != null) return find.getValue().get(); return null; }