{"id":479,"date":"2011-06-25T20:01:28","date_gmt":"2011-06-25T20:01:28","guid":{"rendered":"http:\/\/www.extradrm.com\/?p=73"},"modified":"2013-05-17T10:30:15","modified_gmt":"2013-05-17T08:30:15","slug":"modeles-sgbd-et-courant-nosql","status":"publish","type":"post","link":"https:\/\/www.extradrm.com\/?p=479","title":{"rendered":"Mod\u00e8les SGBD de Minisis"},"content":{"rendered":"<table width=\"529\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td align=\"center\" valign=\"top\" bgcolor=\"#FFFFFF\" width=\"20\"><\/td>\n<\/tr>\n<tr>\n<td colspan=\"7\" valign=\"top\" bgcolor=\"#FFFFFF\" width=\"550\">\n<div>\n<div>\n<h1>Introduction to Xml<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"theproblemwithdataexchange\"><\/a>The problem with data exchange<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">In the today&#8217;s electronically connected world, it is fundamental that different systems be able to communicate with each other. Because it is infeasible for one system to do everything, systems are often required to communicate with each other.Unfortunately, this requires that the communicating systems create a common protocol for their exchanges of information; this protocol is basically the language that the systemswill speak when talking to each other. Two systems trying to communicate using different protocols would have the same problems understanding each other as two humans speaking in two different languages.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<h3><a name=\"businessprocesses\"><\/a>Business Processes<\/h3>\n<\/td>\n<td valign=\"top\">Data exchange is further complicated by the fact that most business processes are hierarchically structured, whereas most IT systems are relationally structured. For example, see the diagrams below.<a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image016.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-81\" title=\"image016\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image016.jpg\" width=\"205\" height=\"188\" \/><\/a> <a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image017.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-82\" title=\"image017\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image017.jpg\" width=\"205\" height=\"188\" \/><\/a><\/p>\n<p>The diagram to the left represents how employee records would be viewed from a corporate (or human) point of view. An employee would have his\/her own file, which would in turn house his\/her contact information, timesheets, and employee history.<\/p>\n<p>However, many systems structure their data differently. The diagram to the right shows another way of representing this model. As you can see, rather than having one file containing all employee information, the data has been separated into four files and linked together. This is how the data would likely be structured in a database system, because databases are easier to administer if they are set up in this fashion.<\/p>\n<p>So, now we have a problem: we have taken our hierarchical business model and restructured it to satisfy a machine. The model now makes less sense to humans, as an employee&#8217;s records have been split up over several files.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"xmlastandarddataexchangeformat\"><\/a>XML: a standard data exchange format<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">\n<div>\n<p>Enter XML.<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h1><a name=\"_Toc53220391\"><\/a>What is XML?<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">XML is one of those buzz words you\u2019ve probably heard or read somewhere, but aren\u2019t sure of the meaning.\u00a0\u00a0<strong>XML (the eXtensible Markup Language)<\/strong>is dramatically altering the world of technology\u2026and most people probably don\u2019t even know it.\u00a0 This is because XML use is usually transparent; you probably use it every day without realizing it.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">In its simplest form, XML is just a way of formatting data for storage or transmission.\u00a0 XML documents are simple and human-readable.\u00a0 Below is a sample XML record.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220392\"><\/a>Sample XML Record<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">&lt;PERSON&gt;<br \/>\n&lt;FIRSTNAME&gt;Steve&lt;\/FIRSTNAME&gt;<br \/>\n&lt;LASTNAME&gt;Kwan&lt;\/LASTNAME&gt;<br \/>\n&lt;ADDRESS&gt;333 Terminal Ave.&lt;\/ADDRESS&gt;<br \/>\n&lt;CITY&gt;Vancouver&lt;\/CITY&gt;<br \/>\n&lt;PROVINCE&gt;BC&lt;\/PROVINCE&gt;<br \/>\n&lt;COUNTRY&gt;Canada&lt;\/COUNTRY&gt;<br \/>\n&lt;EMAIL&gt;steve@minisisinc.com&lt;\/EMAIL&gt;<br \/>\n&lt;\/PERSON&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">This is an XML record for a person named Steve Kwan, whose address is 333 Terminal Ave., Vancouver BC, Canada.\u00a0 Note that each piece of information is enclosed between \u201ctags\u201d that specify a name for the enclosed piece of information; for example, \u201cSteve\u201d is classified as FIRSTNAME.\u00a0 More information on XML formatting is described in further detail later on in this document (see the \u201cUnderstanding XML Data\u201d section).<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">Needless to say, XML data can get significantly more complicated than what is shown above.\u00a0 While this document won\u2019t cover every aspect of XML, it will cover the most important concepts and hopefully give you a foothold on this very elaborate technology.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220393\"><\/a>XML Compatibility<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">At first glance, XML doesn\u2019t look too important.\u00a0 After all, how can such a simple data format be such a big deal?\u00a0 But it is a big deal, and here\u2019s why.What makes XML significant is this:\u00a0<em>because XML data is always in the same format, every XML-compatible program can read it.\u00a0 This makes XML an extremely effective way to get data out of one program and into another.<\/em> XML is like a universal language that all XML-compliant programs can speak.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">As shown in the diagram to the below, it is possible for a database such as MINISIS to use XML to communicate with other applications.<a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image002.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-74\" title=\"image002\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image002-300x145.jpg\" width=\"300\" height=\"145\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">You are likely wondering when you would use XML.\u00a0 Actually, it\u2019s likely that you use it all the time; many programs use XML \u201cbehind the scenes\u201d.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">The next section provides some useful examples of XML in action.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220394\"><\/a>Examples of XML in Action<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\">Below are some useful examples of XML in real world situations.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220396\"><\/a>Dublin Core<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">The\u00a0<strong>Dublin Core<\/strong> standard is a brief specification that is widely used by museums for their\u00a0<em>Collections Management Systems (CMS)<\/em>.\u00a0 The Dublin Core standard specifies fifteen data fields that are common to most museums; through this standard, it is simple to transfer data from one museum database to another.A Dublin Core XML standard has been written to allow Dublin Core data to be exchanged in XML.<\/p>\n<p>The MINISIS Collections Management System,\u00a0<strong><a href=\"http:\/\/213.150.161.217\/web_minisis\/index963a.asp?page=m3\">M3<\/a><\/strong>, is Dublin Core compliant.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220397\"><\/a>Encoded Archival Description (EAD)<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">The\u00a0<strong>Encoded Archival Description (EAD)<\/strong> standard is an XML solution used by archival organizations to manage their records.EAD is a complex protocol used to exchange detailed information between two organizations.\u00a0 Online archival centres such as\u00a0<a href=\"http:\/\/aao.fis.utoronto.ca\/aulo\/whatis.asp\">ARCHEION<\/a> use EAD.\u00a0 EAD is also in use in organizations such as the National Archives of Canada and the Archives of Ontario.<\/p>\n<p>The MINISIS Archival Management system,\u00a0<strong><a href=\"http:\/\/213.150.161.217\/web_minisis\/index5d01.asp?page=m2a\">M2A<\/a><\/strong>, is EAD compliant.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"424\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220398\"><\/a>MARC<\/h3>\n<\/td>\n<td valign=\"top\" width=\"424\">The\u00a0<strong>Machine-Readable Cataloging (MARC)<\/strong> standards are a common file format for libraries and other catalogues.\u00a0 There are several MARC standards currently being used, and thus there may be issues in converting to a standardized MARC format, but there is a MARC specification for XML.<strong><a href=\"http:\/\/213.150.161.217\/web_minisis\/indexa790.asp?page=m2l\">M2L<\/a><\/strong> (MINISIS\u2019 Management for Libraries application) is currently MARC enabled.\u00a0 When MINISIS Inc. can verify that a concrete MARC standard has been utilized, M2L will be XML-enabled.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220399\"><\/a>MINISIS and XML<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"427\">MINISIS Inc. has made a commitment to the XML revolution by offering a fully XML-compliant database engine: the\u00a0<strong>MINISIS RDBMS<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220400\"><\/a>Relational Databases<\/h3>\n<\/td>\n<td valign=\"top\" width=\"427\">Whereas most databases have a small degree of XML compatibility, they are usually unable to conduct full XML importing and exporting.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"427\">This is due to the relational structure of SQL-related database (see the diagram below).\u00a0 While SQL databases are relational, XML is hierarchical in nature.\u00a0 This makes it quite difficult to use XML data with a SQL database.<a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image006.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-76\" title=\"image006\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image006-300x253.jpg\" width=\"300\" height=\"253\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"427\">This serious limitation is causing many people to rethink their reliance upon SQL-based data models.\u00a0 XML is quickly becoming a dominant technology.\u00a0 A database that isn\u2019t XML-compliant will face serious problems in only a few years.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220401\"><\/a>Hierarchical Databases<\/h3>\n<\/td>\n<td valign=\"top\" width=\"427\">A recent push towards hierarchical databases is being made in order to make data communications between different databases easier.\u00a0 MINISIS Inc. is spearheading this revolution with the MINISIS RDBMS.\u00a0 Other popular database models such as LDAP are taking the same route.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"427\">Due to MINISIS\u2019 hierarchical nature, it is one of the few databases in the world that can claim 100% XML compatibility.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"427\">For more information on the differences between relational and hierarchical database technology (as well as the hybrid technology that MINISIS deploys), see our\u00a0<a href=\"http:\/\/213.150.161.217\/web_minisis\/docs\/architecture.pdf\">Database Architecture documentation<\/a>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220402\"><\/a>Understanding XML Data<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">The first thing to understand about actual XML data is that it consists mainly of\u00a0<strong>tags<\/strong> and\u00a0<strong>values<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220403\"><\/a>Tags and Elements<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">A\u00a0<em>tag<\/em> is the name of a particular piece of data, stored between angle brackets (that is, \u201c&lt;\u201d and \u201c&gt;\u201d).\u00a0 There is an opening angle bracket, which will appear like\u00a0&lt;this&gt;, and a closing one that contains a slash, which looks like&lt;\/this&gt;.\u00a0 Between the two will be the item\u2019s value.\u00a0 Whenever a chunk of data appears between opening and closing tags like this, that value (as well as the tags and any associated data) is known as an XML\u00a0<strong>element<\/strong>.For instance, we could have an XML element that looks like this:<\/p>\n<p>&lt;MY_ELEMENT&gt;Hello, world!&lt;\/MY_ELEMENT&gt;<\/p>\n<p>The above element is\u00a0named MY_ELEMENT, and it contains the value, \u201cHello, world!\u201d.\u00a0 If we were to import this element into a database, we may wish to map it to a field named MY_ELEMENT, but\u00a0we could map it to a field with another name if we wanted.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220404\"><\/a>Attributes<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">We can also add additional information to an XML element, which may not be part of the element\u2019s value, but be an important piece of information that should be stored with the record.\u00a0 For example:&lt;MY_ELEMENT language=\u201dEnglish\u201d author=\u201dSteve Kwan\u201d&gt;<br \/>\nHello, world!<br \/>\n&lt;\/MY_ELEMENT&gt;<\/p>\n<p>By tacking the\u00a0language=\u201dEnglish\u201d\u00a0and\u00a0author=\u201dSteve Kwan\u201dstatements into this element, we are providing additional information about this element; namely, we are saying that the element\u2019s language is English, and the author of this element is Steve Kwan.<\/p>\n<p>Extra data stored in this fashion are referred to as\u00a0<strong>attributes<\/strong>.<\/p>\n<p>If you wanted to, you could actually write an entire XML document using attributes, without specifying any\u00a0element values at all.\u00a0 For example, we could rewrite our MY_ELEMENT example\u00a0like so:<\/p>\n<p>&lt;MY_ELEMENT language=\u201dEnglish\u201d author=\u201dSteve Kwan\u201d value=\u201dHello, world!\u201d&gt;\u00a0&lt;\/MY_ELEMENT&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220405\"><\/a>Parent Elements and Hierarchical Tree Structures<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">XML data is stored in a nested tree structure (also known as a hierarchical structure).\u00a0 This means that every item in our XML data can have child items, which are grouped with their parent.\u00a0 For example:&lt;PARENT desc=\u201dThis is the parent.\u201d&gt;<br \/>\n&lt;CHILD desc =\u201dThis is the child.\u201d&gt;My child element&lt;\/CHILD&gt;<br \/>\n&lt;\/PARENT&gt;<\/p>\n<p>The above data tells us that\u00a0we have a record named PARENT, which contains a record named CHILD.\u00a0 The CHILD\u2019s data\u00a0is \u201cMy child element\u201d.<br \/>\nWe could also have\u00a0multiple children for a single parent.\u00a0 So, if we were using PARENT \/ CHILD data for a realistic\u00a0reason, we could have data like this:<\/p>\n<p>&lt;PARENT name=\u201dBill Sr.\u201d&gt;<br \/>\n&lt;CHILD name=\u201dBill Jr.\u201d&gt;&lt;\/CHILD&gt;<br \/>\n&lt;CHILD name=\u201dBill II\u201d&gt;&lt;\/CHILD&gt;<br \/>\n&lt;\/PARENT&gt;<\/p>\n<p>You can generally nest as many child elements as you want.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">As an example:\u00a0 if you had the XML data below:&lt;PARENT name=\u201dBill Sr.\u201d&gt;<br \/>\n&lt;CHILD name=\u201dBill Jr.\u201d&gt;<br \/>\n&lt;GRANDCHILD name=\u201dBill Jr. Jr.\u201d&gt;&lt;\/GRANDCHILD&gt;<br \/>\n&lt;\/CHILD&gt;<br \/>\n&lt;CHILD name=\u201dBill II\u201d&gt;<br \/>\n&lt;GRANDCHILD name=\u201dBill III\u201d&gt;&lt;\/GRANDCHILD&gt;<br \/>\n&lt;GRANDCHILD name=\u201dBill IV\u201d&gt;&lt;\/GRANDCHILD&gt;<br \/>\n&lt;GREATGRANDCHILD name=\u201dBill V\u201d&gt;&lt;\/GREATGRANDCHILD&gt;<br \/>\n&lt;\/CHILD&gt;<br \/>\n&lt;\/PARENT&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">This would be represented by this XML tree structure:<a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image008.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-77\" title=\"image008\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image008.jpg\" width=\"255\" height=\"213\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">So there is your crash course on XML data.\u00a0 There are many other things you can do within an XML record, such as Document Type Definitions (DTDs) and XML Schema, which are discussed in later sections.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220406\"><\/a>Sample XML Records<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">This section contains some sample XML records to help drive the basic concepts home.\u00a0 If you already have a strong grasp on how XML data is stored, you might want to skip this example.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Let\u2019s say we have XML data\u00a0in the format shown below.\u00a0 As can be seen below in the left column, we have a master element called PEOPLE.\u00a0 This is the \u201croot element\u201d; that is, every other element is nested within this element.\u00a0 There will only ever be one PEOPLE element in the entire document; every other piece of data\u00a0is stored inside this element.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220407\"><\/a>Sample XML<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">Inside\u00a0the PEOPLE element, we have a nested element called PERSON.\u00a0 Each individual person stored in this record has various information associated with him\/her, such as a name (stored as FULL_NAME), a title (TITLE), any number of phone numbers (containing two bits of information: the number type and the number), an\u00a0address (specifying a city and country) and any number of links to pictures of the person.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"247\"><span style=\"color: #ffffff;\"><strong>XML data format<\/strong><\/span><\/td>\n<td valign=\"top\" width=\"343\"><span style=\"color: #ffffff;\"><strong>A sample XML data file in this format<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"247\">PEOPLE<br \/>\nPERSON<br \/>\nFULL_NAME<br \/>\nTITLE<br \/>\nPHONE<br \/>\nPH_TYPE<br \/>\nPH_NUMBER<br \/>\nADDRESS<br \/>\nCITY<br \/>\nCOUNTRY<br \/>\nPICTURE<\/td>\n<td valign=\"top\" width=\"343\">&lt;PEOPLE&gt;<br \/>\n&lt;PERSON&gt;<br \/>\n&lt;FULL_NAME&gt;Steve Kwan&lt;\/FULL_NAME&gt;<br \/>\n&lt;TITLE&gt;Software Engineer&lt;\/TITLE&gt;<br \/>\n&lt;PHONE&gt;<br \/>\n&lt;PH_TYPE&gt;Work&lt;\/PH_TYPE&gt;<br \/>\n&lt;PH_NUMBER&gt;604-255-4366&lt;\/PH_NUMBER&gt;<br \/>\n&lt;\/PHONE&gt;<br \/>\n&lt;PHONE&gt;<br \/>\n&lt;PH_TYPE&gt;Home&lt;\/PH_TYPE&gt;<br \/>\n&lt;PH_NUMBER&gt;604-111-2222&lt;\/PH_NUMBER&gt;<br \/>\n&lt;\/PHONE&gt;<br \/>\n&lt;ADDRESS&gt;<br \/>\n&lt;CITY&gt;Vancouver&lt;\/CITY&gt;<br \/>\n&lt;COUNTRY&gt;Canada&lt;\/COUNTRY&gt;<br \/>\n&lt;PICTURE&gt;steve1.jpg&lt;\/PICTURE&gt;<br \/>\n&lt;PICTURE&gt;steve2.jpg&lt;\/PICTURE&gt;<br \/>\n&lt;\/ADDRESS&gt;<br \/>\n&lt;\/PERSON&gt;<br \/>\n&lt;PERSON&gt;<br \/>\n&lt;FULL_NAME&gt;Baseer Khan&lt;\/FULL_NAME&gt;<br \/>\n&lt;TITLE&gt;Software Engineer&lt;\/TITLE&gt;<br \/>\n&lt;PHONE&gt;<br \/>\n&lt;PH_TYPE&gt;Work&lt;\/PH_TYPE&gt;<br \/>\n&lt;PH_NUMBER&gt;604-255-4366&lt;\/PH_NUMBER&gt;<br \/>\n&lt;\/PHONE&gt;<br \/>\n&lt;PHONE&gt;<br \/>\n&lt;PH_TYPE&gt;Home&lt;\/PH_TYPE&gt;<br \/>\n&lt;PH_NUMBER&gt;604-222-2222&lt;\/PH_NUMBER&gt;<br \/>\n&lt;\/PHONE&gt;<br \/>\n&lt;ADDRESS&gt;<br \/>\n&lt;CITY&gt;Vancouver&lt;\/CITY&gt;<br \/>\n&lt;COUNTRY&gt;Canada&lt;\/COUNTRY&gt;<br \/>\n&lt;PICTURE&gt;baseer1.jpg&lt;\/PICTURE&gt;<br \/>\n&lt;\/ADDRESS&gt;<br \/>\n&lt;\/PERSON<br \/>\n&lt;\/PEOPLE&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220408\"><\/a>Structuring XML Data<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">There is a problem with the XML examples shown above: in those examples, you can specify data elements and their values, but you can\u2019t specify their structure.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">It\u2019s very important that we be able to specify the format in which we receive XML data.\u00a0 For example, suppose we are expecting to receive a record in this format:&lt;PERSON&gt;<br \/>\n&lt;FULL_NAME&gt;My name&lt;\/FULL_NAME&gt;<br \/>\n&lt;ADDRESS&gt;My address&lt;\/FULL_NAME&gt;<br \/>\n&lt;\/PERSON&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Now, suppose we are expecting data formatted like the above, but instead, we receive data like this:&lt;OBJECT&gt;<br \/>\n&lt;OBJECT_NAME&gt;My object&lt;\/OBJECT_NAME&gt;<br \/>\n&lt;OBJECT_INFORMATION&gt;<br \/>\n&lt;OBJECT_DATE&gt;Today&lt;\/OBJECT_DATE&gt;<br \/>\n&lt;OBJECT_LOCATION&gt;Some place&lt;\/OBJECT_LOCATION&gt;<br \/>\n&lt;\/OBJECT_INFORMATION&gt;<br \/>\n&lt;\/OBJECT&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">This is a totally different object we\u2019ve received!\u00a0 Our program won\u2019t know how to handle this data.\u00a0 Even in the flexible world of XML, we need to establish standards on data transfer.\u00a0 That\u2019s where Document Type Definitions come into play.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220409\"><\/a>Document Type Definitions (DTDs)<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\"><strong>Document Type Definitions (DTDs)<\/strong> allow users to specify the format in which they wish to receive data.\u00a0 The purpose of this article isn\u2019t to explain DTDs in heavy detail, but rather, to give an example of how they work.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">For example, you could add the following restrictions to an XML document via a DTD:<\/p>\n<ul type=\"disc\">\n<li>Restrict the number of\u00a0&lt;PERSON&gt;\u00a0elements transmitted<\/li>\n<li>Enforce a rule statement that only one\u00a0&lt;PICTURE&gt;\u00a0can be transmitted.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">A DTD is added to your document by putting a DTD declaration at the beginning of your document.\u00a0 For example, if you were using the Encoded Archival Description (EAD) XML format, you might use this declaration::&lt;!DOCTYPE ead PUBLIC &#8220;-\/\/Society of American Archivists\/\/DTD ead.dtd (Encoded<br \/>\nArchival Description (EAD) Version 1.0)\/\/EN&#8221; &#8220;..\/dtd\/ead.dtd&#8221;<br \/>\n[<br \/>\n&lt;!ENTITY % eadnotat PUBLIC &#8220;-\/\/Society of American Archivists\/\/DTD<br \/>\neadnotat.ent (EAD Notation Declarations)\/\/EN&#8221; &#8220;..\/dtd\/eadnotat.ent&#8221;&gt;<br \/>\n%eadnotat;<br \/>\n]&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Again, the exact meaning of these statements is out of the scope of this document.\u00a0 The general idea is that adding this text to the top of your document specifies that XML elements must be transmitted in a particular order and with a particular number of each element.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220410\"><\/a>XML Schema<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">The weakness of DTDs is that they allow you to specify the XML document structure, but they don\u2019t allow you to specify certain attributes regarding the elements.\u00a0 For example, with a DTD, you cannot specify that a\u00a0&lt;DATE&gt;element should be transmitted in the format YYYY\/MM\/DD.\u00a0 So, with a DTD alone, there\u2019s nothing stopping someone from transmitting this:&lt;DATE&gt;No, I don\u2019t want to enter a valid date.&lt;\/DATE&gt;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">To circumvent problems like this, you\u2019d use XML Schema.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><strong>XML Schema<\/strong>, among other things, allow you to dictate data types for an XML document.\u00a0 For example, you could force an element to contain a numeric value with an XML Schema.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">While the scope of XML Schema is out of this document, there is plenty of information available on this topic elsewhere.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220411\"><\/a>Manipulating XML Data<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">So once you have your XML data ready, how do you access it?<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">There are many different ways to access XML data.\u00a0 Many programs can read XML data if it is provided in the correct format, with the correct elements and structure.\u00a0 However, in many instances you will need to manipulate XML data that is stored in your own format.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">For example, you may want to define your own XML data structure, using your own DTD and Schema.\u00a0 If you do this, then you will likely need to code custom software that can manage data in this format.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">For programmers, there are many different methods for accessing data.\u00a0 Many programming libraries contain their own methods for manipulating XML data.\u00a0 There are several common interfaces for XML data which programmers can use to get at their XML data; here are a few of them.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">The topic of manipulating XML data is one that is of concern mainly to programmers; thus, this section of the document is quite technical and may not make much sense to many non-technical readers.\u00a0 If the nitty-gritty of XML data manipulation doesn\u2019t interest you, you might want to skip to the next section.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<h3><a name=\"_Toc53220395\"><\/a>XSLT<\/h3>\n<\/td>\n<td valign=\"top\">One of the most useful applications of XML are\u00a0<strong>Extensible Stylesheet Language Transformations (XSLT).<\/strong> The term may be quite a mouthful, but the concept is simple:\u00a0 An XML record is automatically converted into a webpage and displayed to a user.\u00a0 The principle is illustrated in the diagram below.<a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image004.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-75\" title=\"image004\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image004-300x105.jpg\" width=\"300\" height=\"105\" \/><\/a><\/p>\n<p>So, in short, with an XSLT system you can have your XML-enabled database generate webpages automatically; this is a great technology for institutions who want to publish records online.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220412\"><\/a>Document Object Model (DOM)<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">The\u00a0<strong>Document Object Model (DOM)<\/strong> allows programmers to access their XML data in hierarchical tree form.\u00a0 Remember that XML data is stored in a hierarchical tree structure.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">DOM generally works in this fashion:<\/p>\n<ol type=\"1\">\n<li>First, DOM creates an XML tree based on the data from a file, or creates a new tree from scratch, which is empty.<\/li>\n<li>Second, a programmer now has access to the entire XML document \u201ctree\u201d of elements.\u00a0 This entire tree can be manipulated as the programmer desires; this includes adding new elements, changing existing elements, deleting elements, etc.<\/li>\n<li>Third, the programmer can now choose what to do with the data.\u00a0 Perhaps he\/she wishes to save it to a file on disk, or send it over the Net.<\/li>\n<\/ol>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">DOM is a useful technology, but because it requires the entire XML document to be loaded at once, it can slow down your machine if the XML document is very large.\u00a0 For this reason, it\u2019s sometimes preferable to use the Simple API for XML, or SAX.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220413\"><\/a>Simple API for XML (SAX)<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">A more efficient alternative to DOM is the\u00a0<strong>Simple API for XML (SAX)<\/strong>. Originally designed for the Java programming language, SAX is now available for many different languages, such as C++.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">SAX is an\u00a0<em>event-driven<\/em> technology.\u00a0 From a technical perspective, this means that rather than loading the entire XML tree into your computer\u2019s memory (as DOM does), SAX only loads one bit at a time and informs you when it\u2019s done; it then proceeds to load the next one.\u00a0 In many situations, SAX may be more efficient than DOM; however, it is often more complex to use.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220414\"><\/a>Importing\/Exporting Records in XML<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Now that you know the details of XML and how it works, let\u2019s talk about issues relating to XML record management.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">The first step to using XML is getting your data into (or out of) XML format.\u00a0 Converting your data to XML could be a simple task, or an exceedingly difficult one, depending upon your database architecture.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">While there are several different types of databases available, we will focus on the two most prominent ones:<\/p>\n<ul type=\"disc\">\n<li><strong>Hierarchical databases<\/strong>, which model data similar to your business processes, in a top-down hierarchical fashion<\/li>\n<li><strong>Relational databases<\/strong>, which break data up into well-organized tables and link them all together.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">If you require more information on the topic of different database architectures, I recommend you read MINISIS Inc.\u2019s\u00a0<a href=\"http:\/\/213.150.161.217\/web_minisis\/docs\/architecture.pdf\">database architecture discussion<\/a>.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220415\"><\/a>A Hierarchical Database Approach<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">Hierarchical databases are ideal for XML data, because XML is stored in hierarchical format.\u00a0 So, if you are using a hierarchical database, XML data is your friend.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">\n<div>\n<table width=\"50%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\" align=\"right\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100%\">PEOPLE<br \/>\nPERSON<br \/>\nFULL_NAME<br \/>\nTITLE<br \/>\nPHONE<br \/>\nPH_TYPE<br \/>\nPH_NUMBER<br \/>\nADDRESS<br \/>\nCITY<br \/>\nCOUNTRY<br \/>\nPICTURE<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Let\u2019s say you have an XML file that stores data in the format shown to the right..\u00a0 (For those of you paying attention, this is the same format used in the Sample XML Records section; you might want to take a look at the examples there if you haven\u2019t already.)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Because XML is stored in a hierarchical format, if you are using a hierarchical database, you can make a near-exact duplicate of the data structure used in the XML file.\u00a0 For example, if you are using the MINISIS database engine, you could make an equivalent database to the XML file, as shown below.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#6699CC\" width=\"295\"><span style=\"color: #ffffff;\"><strong>XML data structure<\/strong><\/span><\/td>\n<td valign=\"top\" bgcolor=\"#6699CC\" width=\"295\"><span style=\"color: #ffffff;\"><strong>MINISIS database structure<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"295\">PEOPLE<br \/>\nPERSON<br \/>\nFULL_NAME<br \/>\nTITLE<br \/>\nPHONE<br \/>\nPH_TYPE<br \/>\nPH_NUMBER<br \/>\nADDRESS<br \/>\nCITY<br \/>\nCOUNTRY<br \/>\nPICTURE<\/td>\n<td valign=\"top\" width=\"295\">PERSON\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 database<br \/>\nFULL_NAME\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 character field<br \/>\nTITLE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 repeating field<br \/>\nPHONE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 repeating group<br \/>\nPH_TYPE character field<br \/>\nPH_NUMBER\u00a0\u00a0\u00a0 character field<br \/>\nADDRESS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 group<br \/>\nCITY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 character field<br \/>\nCOUNTRY\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 character field<br \/>\nPICTURE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 repeating field<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">Note that in the MINISIS database, you don\u2019t need the PEOPLE root element as you would in the XML document, so we don\u2019t need to map that over.\u00a0 However, if you wanted to, you could.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220416\"><\/a>A Relational Database Approach<\/h3>\n<\/td>\n<td valign=\"top\" width=\"437\">As stated earlier, a relational database system operates by storing related data in a lot of small databases and linking them together.\u00a0 These links are created by assigning ID numbers to each record.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\"><a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image010.jpg\"><img loading=\"lazy\" class=\"size-full wp-image-78 alignright\" title=\"image010\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image010.jpg\" width=\"194\" height=\"188\" \/><\/a>If you were going to built the example system we\u2019ve been using (The PERSON system), you would create a relational database similar to the one depicted to the right.The PERSON database would store basic information about the person, such as their name, whereas the other information would be offloaded to other databases, such as TITLE, ADDRESS, PHONE, and PICTURE.\u00a0 When someone runs a query on this database, the other database would need to be loaded, which would result in a slower system.\u00a0 This is why, despite their popularity, relational databases may start to lose popularity.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">The database definitions for this system would look like the ones shown below.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td colspan=\"5\" valign=\"top\" width=\"422\"><strong>PERSON Table<\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"33\"><strong>id<\/strong><\/td>\n<td valign=\"top\" width=\"69\"><strong>parent_id<\/strong><\/td>\n<td valign=\"top\" width=\"59\"><strong>root_id<\/strong><\/td>\n<td valign=\"top\" width=\"83\"><strong>occurrence<\/strong><\/td>\n<td valign=\"top\"><strong>full_name<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"33\">1<\/td>\n<td valign=\"top\" width=\"69\"><\/td>\n<td valign=\"top\" width=\"59\"><\/td>\n<td valign=\"top\" width=\"83\"><\/td>\n<td valign=\"top\">Michael Moore<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"33\">2<\/td>\n<td valign=\"top\" width=\"69\"><\/td>\n<td valign=\"top\" width=\"59\"><\/td>\n<td valign=\"top\" width=\"83\"><\/td>\n<td valign=\"top\">Henry Moore<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td colspan=\"5\" valign=\"top\"><strong>TITLE Table<\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"33\"><strong>id<\/strong><\/td>\n<td valign=\"top\" width=\"69\"><strong>parent_id<\/strong><\/td>\n<td valign=\"top\" width=\"83\"><strong>root_id<\/strong><\/td>\n<td valign=\"top\" width=\"110\"><strong>occurrence<\/strong><\/td>\n<td valign=\"top\"><strong>title<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"33\">1<\/td>\n<td valign=\"top\" width=\"69\">1<\/td>\n<td valign=\"top\" width=\"83\">1<\/td>\n<td valign=\"top\" width=\"110\">1<\/td>\n<td valign=\"top\">Artist<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"33\">2<\/td>\n<td valign=\"top\" width=\"69\">1<\/td>\n<td valign=\"top\" width=\"83\">1<\/td>\n<td valign=\"top\" width=\"110\">2<\/td>\n<td valign=\"top\">Scuba Diver<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"33\">3<\/td>\n<td valign=\"top\" width=\"69\">2<\/td>\n<td valign=\"top\" width=\"83\">2<\/td>\n<td valign=\"top\" width=\"110\">1<\/td>\n<td valign=\"top\">Director<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td colspan=\"6\" valign=\"top\" width=\"439\"><strong>PHONE Table<\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"34\"><strong>id<\/strong><\/td>\n<td valign=\"top\" width=\"70\"><strong>parent_id<\/strong><\/td>\n<td valign=\"top\" width=\"60\"><strong>root_id<\/strong><\/td>\n<td valign=\"top\" width=\"84\"><strong>occurrence<\/strong><\/td>\n<td valign=\"top\" width=\"72\"><strong>type<\/strong><\/td>\n<td valign=\"top\" width=\"120\"><strong>number<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">1<\/td>\n<td valign=\"top\" width=\"70\">1<\/td>\n<td valign=\"top\" width=\"60\">1<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"72\">mobile<\/td>\n<td valign=\"top\" width=\"120\">78-76-54-5453<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">2<\/td>\n<td valign=\"top\" width=\"70\">2<\/td>\n<td valign=\"top\" width=\"60\">2<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"72\">home<\/td>\n<td valign=\"top\" width=\"120\">76-45-435-223<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">3<\/td>\n<td valign=\"top\" width=\"70\">2<\/td>\n<td valign=\"top\" width=\"60\">2<\/td>\n<td valign=\"top\" width=\"84\">2<\/td>\n<td valign=\"top\" width=\"72\">mobile<\/td>\n<td valign=\"top\" width=\"120\">7865-65-4333<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td colspan=\"6\" valign=\"top\" width=\"439\"><strong>ADDRESS Table<\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"34\"><strong>id<\/strong><\/td>\n<td valign=\"top\" width=\"70\"><strong>parent_id<\/strong><\/td>\n<td valign=\"top\" width=\"60\"><strong>root_id<\/strong><\/td>\n<td valign=\"top\" width=\"84\"><strong>occurrence<\/strong><\/td>\n<td valign=\"top\" width=\"108\"><strong>city<\/strong><\/td>\n<td valign=\"top\" width=\"83\"><strong>country<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">1<\/td>\n<td valign=\"top\" width=\"70\">1<\/td>\n<td valign=\"top\" width=\"60\">1<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"108\">Paris<\/td>\n<td valign=\"top\" width=\"83\">France<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">2<\/td>\n<td valign=\"top\" width=\"70\">2<\/td>\n<td valign=\"top\" width=\"60\">2<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"108\">New York<\/td>\n<td valign=\"top\" width=\"83\">USA<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n<tbody>\n<tr bgcolor=\"#6699CC\">\n<td colspan=\"5\" valign=\"top\" width=\"439\"><strong>PICTURE Table<\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#6699CC\">\n<td valign=\"top\" width=\"34\"><strong>id<\/strong><\/td>\n<td valign=\"top\" width=\"70\"><strong>parent_id<\/strong><\/td>\n<td valign=\"top\" width=\"60\"><strong>root_id<\/strong><\/td>\n<td valign=\"top\" width=\"84\"><strong>occurrence<\/strong><\/td>\n<td valign=\"top\" width=\"192\"><strong>picture<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">1<\/td>\n<td valign=\"top\" width=\"70\">1<\/td>\n<td valign=\"top\" width=\"60\">1<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"192\">C:PICSIMG0245.JPG<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">2<\/td>\n<td valign=\"top\" width=\"70\">1<\/td>\n<td valign=\"top\" width=\"60\">1<\/td>\n<td valign=\"top\" width=\"84\">2<\/td>\n<td valign=\"top\" width=\"192\">C:PICSIMG890E.JPG<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"34\">3<\/td>\n<td valign=\"top\" width=\"70\">2<\/td>\n<td valign=\"top\" width=\"60\">2<\/td>\n<td valign=\"top\" width=\"84\">1<\/td>\n<td valign=\"top\" width=\"192\">C:PICSIMG0289.JPG<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"437\">As you can see, the relational database structure provided here is quite different from the hierarchical structure provided.\u00a0 This makes relational databases a little incompatible with XML data.\u00a0 The best XML-compliance will be found in systems with hierarchical database structure, such as\u00a0<a href=\"http:\/\/213.150.161.217\/web_minisis\/docs\/architecture.pdf\">the MINISIS RDBMS.<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220417\"><\/a>How Does MINISIS Work With XML?<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">There are two ways to handle XML data in the MINISIS RDBMS:<\/p>\n<ul type=\"disc\">\n<li>Batch XML Document File Transfers<\/li>\n<li>Online XML Document Transfers.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220418\"><\/a>Batch XML Document File Transfers<\/h3>\n<\/td>\n<td valign=\"top\" width=\"439\">A batch transfer involves loading a record (or set of records) from an XML file stored on your hard disk.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">As shown in the diagram below, the user generates XML data via an XML client application.\u00a0 This application could be any application which outputs data in XML format.\u00a0 The XML Data is then loaded into a special conversion program, which is responsible for loading the data into MINISIS.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">The batch transfer system is effective for large, infrequent file transfers. If your system requires live transactions, you may be better off using a real-time, online XML solution such as the one described in the next section.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\"><a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image012.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-79\" title=\"image012\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image012-300x153.jpg\" width=\"300\" height=\"153\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220419\"><\/a>Online XML Document Transfers<\/h3>\n<\/td>\n<td valign=\"top\" width=\"439\">For real-time systems, such as online resources, you will want to use the MINISIS Web Interface (MWI) to web-enable your database and XML-enable it.\u00a0 With MWI, a user can create, view and update records through a web-enabled XML application, such as a web browser.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\"><a href=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image014.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-80\" title=\"image014\" alt=\"\" src=\"http:\/\/www.extradrm.com\/wp-content\/uploads\/2011\/06\/image014-300x98.jpg\" width=\"300\" height=\"98\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h1><a name=\"_Toc53220420\"><\/a>Further Information Sources<\/h1>\n<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">So now that you\u2019re on the XML bandwagon, you surely want to know where to look to learn more about XML and how to use it.\u00a0 Below are some suggested resources.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\">\n<h3><a name=\"_Toc53220421\"><\/a>Online Resources<\/h3>\n<\/td>\n<td valign=\"top\" width=\"439\">Expressing\u00a0 Simple Dublin Core in RDF\/XML<br \/>\n<a href=\"http:\/\/dublincore.org\/documents\/2002\/07\/31\/dcmes-xml\/\">http:\/\/dublincore.org\/documents\/2002\/07\/31\/dcmes-xml\/<\/a><br \/>\n<em>Dublin Core is a format used for the interchange of information regarding museum collections.\u00a0 Dublin Core is very useful to museums wishing to XML-enable their. collections.<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">Encoded Archival Description (EAD)<br \/>\n<a href=\"http:\/\/www.loc.gov\/ead\/tglib\/index.asp\">http:\/\/www.loc.gov\/ead\/tglib\/index.asp<\/a><br \/>\n<em>EAD is an XML interchange format used by archival organizations.<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">MARC 21 XML Schema<br \/>\n<a href=\"http:\/\/www.loc.gov\/standards\/marcxml\/\">http:\/\/www.loc.gov\/standards\/marcxml\/<\/a><br \/>\n<em>MARC is an XML interchange format used by libraries and bibliographical systems.<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\"><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"100\"><\/td>\n<td valign=\"top\" width=\"439\">Extensible Markup Language (XML) 1.0<br \/>\n<a href=\"http:\/\/www.w3.org\/TR\/WD-xml\">http:\/\/www.w3.org\/TR\/WD-xml<\/a><br \/>\n<em>The definition of the XML language; this document is probably too technical for most users.<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Introduction to Xml The problem with data exchange In the today&#8217;s electronically connected world, it is fundamental that different systems be able to communicate with each other. Because it is infeasible for one system&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":2845,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,32,15],"tags":[85,357],"youtube_video":null,"_links":{"self":[{"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/posts\/479"}],"collection":[{"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=479"}],"version-history":[{"count":0,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/posts\/479\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=\/wp\/v2\/media\/2845"}],"wp:attachment":[{"href":"https:\/\/www.extradrm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.extradrm.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}