MVPstar,
Write Microsoft, tell them you're a 15 year old genius, and to comp you a copy of SQL Server. Barring that, you can probably get an academic discounted version of the standard edition of SQL Server for ~300. Make some noise and someone may/should help you out.
Among a billion other worthwhile things that SQL Server can do, it can render relational database data as XML, either in flat form or according to whatever schema you desire. After you score the free copy of SQL Server, read Wrox Press's "SQL Server 2000 DTS"
and "SQL Server 2000 Professional."
So the answer to your question about what you store in the DB: you store data, and you store relationships about that data, and if you need to render it as XML or in any other structured format, SQL Server and ADO/ADO.NET make it super-easy to translate it
into a kludgier form.
The following Classic ASP code will return XML directly from a SQL Server database, the operative bits being the FOR XML RAW directive:
ConnString=Whatever_String
set objStream = Server.CreateObject("ADODB.Stream")
Set objConn= Server.CreateObject("ADODB.Connection")
set objComm = Server.CreateObject("ADODB.Command")
objConn.open (ConnString)
objComm.ActiveConnection = objConn
objComm.CommandType = 1 'adCmdText
objComm.CommandText = "SELECT blah blah blah ... FOR XML RAW"
objComm.Properties("Output Stream") = objStream
objStream.Open
objComm.Execute , , 1024 'adExecuteStream
Response.Write objStream.ReadText
I'm not a developer genius, but my own experience is that XML is a kludgy, clumsy mechanism for data storage in many circumstances. In my opinion, it's an excellent medium for data exchange, but a database engine can be applied a lot more flexibly.
I'm also proposing to store XML in a database, but what the XML really is in my case is a kind of encoding or shorthand for a more expansive template.
Maybe this helps. Your library project sounds great. Stick with it.