Added names, attributes and support for recursive elements
Update source URI if it changed