Jerry and Tom,
The content repository can solve this, although there might be a performance issue with getting the paths. https://openacs.org/forums/message-view?message_id=115131
Using cr_folders, you can place a content_item in a folder using parent_id.
You can place and item in more than one folder using cr_symlinks.
You can also define ordering to items using cr_item_rels, giving items and ordering based on their relationship to another item. So for something like chapeters, you'd create a "booK" item and relate each chapter with cr_item_rels setting the order in the cr_item_rels table.