I was wondering if this were possible. Nice demonstration. I think it would be even nicer to stick to immutability if possible. Would you be able to return the value as a record and use { author with Name = "Steffen" } instead?
Also, what about the ability to point to a Stream rather than a file name? Can the StructuredXml<> take a F# quotation? I have yet to dig into creating type providers, so I still don't know the limitations.