[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] XML-Data and database mapping
I've been wrestling with issues for encoding databases (and report definitions) into a single XML file and restoring them, for some time. I would appreciate some feedback on the following. I would be ecstatic to be told I'm blind, stupid, lazy and have missed some very obvious postings covering all these issues :-) ----- EMBEDDED SCHEMA My current compromise is to have <report> <Schema> </Schema> other tags </report> where the schema describes all following tags but obviously not the root <report> tag. Note: I'm using the MS convention of <Schema> rather than strict XML-Data name <schema>. ----- MAPPING FIELD TYPES AND TABLES The most serious problem I see with mapping database schemae using XML-Data or the other published suggestions is the lack of scoping. As I understand the (suggested) specifications and the current MS versions, fields within database tables will be handled by <ElementType> definitions and referred to from within a table's <ElementType> by <element> tags. This means that fields within tables are globally scoped in their definition, unlike the usual DB practice that a field is defined within the context of a database table (relation). At a trivial level, "Name" might be a compatible data type such as fixed-length string, but a different length, within <Person> and <Organisation>. I would vastly prefer to use an agreed standard for our schema export/import but this restriction makes it impossible. Once you accept that field definitions can be scoped within tables, it's a much nicer syntax to define field data types within the <element> tag as shown below. This approach can co-exist with defining <ElementTypes> separately as separate definitions would be seen as <element id="#Address"> instead of <element name="Addresss" dt:dt="string"> ----- EXAMPLE OUTPUT FWIW the following is the current output of our report writer, which I am in the process of enhancing so it can read such a report document back in again. Note: 1) we encode layout separately from style 2) the style strings are mainly CSS compliant except if we have things like graphs where we use CSS-like syntax to describe graph attributes 3) our layout has a CSS object model where possible and includes an assumption of nested styles - an element within the layout inherits styles from its containing elements. <?xml version="1.0" standalone="yes"?> <report> <!-- OOFILE extension to XML-Data allows <element> definition without <ElementType> for primitives so our dbFields are <elements> with the datatype declared as attribute, rather than the official method of declaring an <ElementType> then using an IDRef in the type attribute --> <Schema xmlns="urn:schema-microsoft-com:xml-data" xmlns:dt="urn:schema-microsoft-com:datatypes" xmlns:oof="urn:schema-oofile-com-au:datatypes"> <ElementType name="perfTable"> <element name="ID" dt:dt="string" oof:maxlen="15"/> <element name="Name" dt:dt="string" oof:maxlen="41"/> <element name="Awarded" dt:dt="ui4"/> <element name="Teacher" dt:dt="string" oof:maxlen="8"/> </ElementType> </Schema> <layout ID="1-1"> <header> <box ID="1-1-1"> <inline>Page 1</inline> </box> <box ID="1-1-1-2"> <inline>Set your school name in 'Preferences'</inline> </box> <box ID="1-1-1-3"> <inline>Outcomes achieved by this student</inline> <inline></inline> <BR/> <inline>Josef ABRAMSON</inline> </box> <space height="4"/> <HR height="2"/> <space height="12"/> </header> <footer> <HR height="2"/> <space height="4"/> <box ID="1-1-1-3"> <inline>KIDMAP 99 for Macintosh</inline> <inline>Printed by KIDMAP Manager on 5/5/1999</inline> </box> </footer> <table ID="1-1-1" source="perfTable"> <footer> <space height="12"/> <box ID="1-1-1-1-2"> <inline>Number of outcomes listed: </inline> <inline>24</inline> </box> </footer> </table> </layout> <style> #1-1-1{font-family: Helvetica; line-height: 1.000 ; font-size: 10 ; color: rgb(0, 0, 0); text-align: left} #1-1-1-2{font-family: Helvetica; line-height: 1.000 ; font-size: 16 ; font-weight: bold; font-stretch: expanded; color: rgb(0, 0, 0); text-align: left} #1-1-1-3{font-family: Helvetica; line-height: 1.000 ; font-size: 14 ; font-weight: bold; color: rgb(0, 0, 0); text-align: left} #1-1-1-3{font-family: Helvetica; line-height: 1.000 ; font-size: 10 ; font-weight: bold; color: rgb(0, 0, 0); text-align: left} #1-1-1{font-family: Helvetica; line-height: 1.000 ; font-size: 10 ; color: rgb(0, 0, 0); text-align: left} #1-1-1-1-2{font-family: Helvetica; line-height: 1.000 ; font-size: 12 ; font-weight: bold; color: rgb(0, 0, 0); text-align: left} </style> <perfTable> <ID>ARDA11</ID> <Name>Draws upon play</Name> <Awarded>16th Mar 1999</Awarded> <Teacher>MANAGER</Teacher> <ID>ARDA21</ID> <Name>Use experience</Name> <Awarded>16th Mar 1999</Awarded> <Teacher>MANAGER</Teacher> <ID>ARDA31</ID> <Name>Explore ideas</Name> <Awarded>16th Mar 1999</Awarded> <Teacher>MANAGER</Teacher> <ID>ARDA41</ID> <Name>Experiment - ideas</Name> <Awarded>16th Mar 1999</Awarded> <Teacher>MANAGER</Teacher> </perfTable> </report> Andy Dent BSc MACS AACM, Software Designer, A.D. Software, Western Australia OOFILE - Database, Reports, Graphs, GUI for c++ on Mac, Unix & Windows PP2MFC - PowerPlant->MFC portability http://www.oofile.com.au/ xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i... Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1 To (un)subscribe, mailto:majordomo@i... the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@i... the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@i...)
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|