| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html> |
| <head> |
| <link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" /> |
| <title>XML file associations with DTDs and XML schemas</title> |
| </head> |
| <body id="cxmlcat"><a name="cxmlcat"><!-- --></a> |
| |
| <h1 class="topictitle1">XML file associations with DTDs and XML schemas</h1> |
| <div><p>There are two different ways to associate XML files with DTDs or |
| XML schemas.</p><ol><li>Direct association - The XML file contains either the name of a DTD in |
| its doctype declaration (for example, <!DOCTYPE root-element SYSTEM " <var class="varname">dtdfile.dtd</var>" |
| >, where <var class="varname">dtdfile.dtd</var> is the name of the DTD file) or it |
| contains the path of an XML schema in the schemaLocation attribute of the |
| XML file root element (for example, <xsi:schemaLocation="http://www.ibm.com |
| <var class="varname">schema.xsd</var>">, where <var class="varname">schema.xsd</var> is |
| the name of the XML schema.</li> |
| <li>XML Catalog entry - You can register DTD and XML schema files in |
| the XML Catalog and associate them with a <var class="varname">Key</var> that represents |
| them. You can then refer to a DTD or XML schema file <var class="varname">Key</var> from |
| an XML file instead of referring directly to the DTD or XML schema file. An |
| XML Catalog entry contains two parts - the Key (which represents the DTD or |
| XML schema) and a URI (which contains information about the DTD or XML schema |
| location).</li> |
| </ol> |
| <div class="skipspace"><h4 class="sectiontitle">How an association works </h4><b>Associating an XML |
| file with a DTD </b><div class="p">If an XML file is associated with a DTD, a DOCTYPE |
| tag such as the following is included in the XML file:<pre><!DOCTYPE root-name PUBLIC "<var class="varname">InvoiceId</var>" "<var class="varname">C:\mydtds\Invoice.dtd</var>"></pre> |
| </div> |
| <p><var class="varname">InvoiceId</var> is the public identifier of |
| the DTD file. It is used to associate the XML file with a DTD file (in this |
| case, the DTD file is <var class="varname">Invoice.dtd</var>). If the public identifier |
| InvoiceId corresponds to the <var class="varname">Key</var> of the XML Catalog entry |
| for Invoice.dtd, then the <var class="varname">URI</var> of the XML Catalog entry |
| (which contains information about the location of Invoice.dtd) is used to |
| locate the DTD. Otherwise, the DOCTYPE's system identifier ( <var class="varname">"C:\mydtds\Invoice.dtd"</var>), |
| which refers directly to the file system location of the DTD, is used to locate |
| the DTD. </p> |
| <p> <b>Note</b>: You can also use a system identifier as |
| a Key in an XML Catalog entry. If you use a system identifier as a Key, a |
| DOCTYPE tag such as the following is included in an XML file:</p> |
| <pre><!DOCTYPE Root-name SYSTEM "<var class="varname">MyDTD.dtd</var>"> </pre> |
| <p>where <var class="varname">MyDTD.dtd</var> is the system identifier that corresponds |
| to the Key of an XML Catalog entry.</p> |
| </div> |
| <div class="skipspace"><b>Associating an XML file with an XML schema</b><p>If an XML file |
| is associated with an XML schema, one or more schema location attributes are |
| included in the XML file. The information in the schemaLocation is provided |
| as a "hint" to the XML processor. Examples of schemaLocation attributes are |
| shown below: </p> |
| <div class="p"> <b>Example 1 </b><pre><purchaseOrder xmlns="http://www.ibm.com" |
| xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd"> |
| <shipTo country="US"> |
| ...</pre> |
| </div> |
| <div class="p"><b>Example 2 </b><pre><purchaseOrder xmlns="http://www.ibm.com" |
| xsi:schemaLocation="http://www.ibm.com PO.xsd"> |
| <shipTo country="US"> |
| ....</pre> |
| </div> |
| <p>In Example 1, the schemaLocation 'hint' ('C:\myschemas\PurchaseOrder.xsd') |
| refers directly to the file system location or URI of the XML schema. In this |
| case, the schema file will be located by the XML processor directly.</p> |
| <p>In |
| Example 2, the schemaLocation 'hint' ('PO.xsd') refers to an XML Catalog entry. |
| PO.xsd corresponds to the <var class="varname">Key</var> of the XML Catalog entry |
| for PurchaseOrder.xsd, and the URI of the XML Catalog entry (which contains |
| information about the location of PurchaseOrder.xsd) will be used to located |
| the XML schema.</p> |
| <p>In both examples, <samp class="codeph">http://www.ibm.com</samp> in |
| the <samp class="codeph">xsi:schemaLocation</samp> tag is a URI that identifies the namespace |
| for the XML schema. </p> |
| <div class="p">You can also use a namespace as a Key for |
| an XML Catalog entry. If you use a namespace as a Key, a schemaLocation tag |
| such as the following is included in an XML file:<pre><purchaseOrder xmlns:="www.ibm.com" |
| xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd "></pre> |
| </div> |
| <p>The |
| schemaLocation attribute points to both the Key and the actual location of |
| the schema.</p> |
| <p><b>DTD or XML schema resides on a remote server</b></p> |
| <p>Several |
| functions in the XML editor, such as validation and content assist, require |
| the availability of a DTD or an XML schema. The product documentation provides |
| usage information for cases when the DTD or XML schema resides on your local |
| machine. However, in many cases, the DTD or XML schema may reside on a remote |
| server, for example:</p> |
| <p><samp class="codeph"><!DOCTYPE Catalog PUBLIC "abc/Catalog" |
| "http://xyz.abc.org/dtds/catalog.dtd"></samp></p> |
| <p>Normally, this case |
| poses no problem, because the DTD or XML schema can be retrieved from the |
| remote server. However, if you are behind a firewall, and do not have a SOCKSified |
| system, the workbench currently does not provide a way for you to specify |
| a socks server for retrieving a DTD or XML schema. If you are unable to SOCKSify |
| your system, the workaround for this problem is to retrieve a copy of the |
| DTD or XML schema (using a Web browser, for example) and save that copy on |
| your local machine. Then, you can either place a local copy in the same project |
| as your XML file, or use the XML Catalog to associate a public identifier |
| with the DTD's (local) location.</p> |
| <p><b>Note</b>: If you have an XML file |
| associated with an XML schema or DTD that is elsewhere in the network, and |
| you are working on a machine disconnected from the network, you can follow |
| the steps described above if you want to use content assist or validate your |
| XML file. </p> |
| </div> |
| <div class="skipspace"><h4 class="sectiontitle">Advantages of XML Catalog entry associations</h4><p>If |
| you create a direct association between an XML file and an XML schema or DTD |
| file, any time you change the location of the schema or DTD you have to track |
| down and update all of the referencing XML files with the new location of |
| the DTD or schema. If, however, you associate an XML file with an XML schema |
| or DTD Key, then, when you change the location of the schema or DTD, you only |
| have to update the XML Catalog entry, instead of each individual XML file. </p> |
| <p>For |
| example, you have a DTD called "Building.dtd", which is associated with five |
| XML files - Office.xml, House.xml, Apartment.xml, Bank.xml, and PostOffice.xml. |
| You move the DTD file Building.dtd to a new location. If you have a direction |
| association between Building.dtd and all the XML files, you will have to update |
| the <DOCTTYPE> declaration in each XML file to reflect the new location |
| of Building.dtd. If, however, you have an XML Catalog association, and |
| all the XML files just refer to the Key of Building.dtd, then you only have |
| to update the URI and all the XML files will point to the new location of |
| Building.dtd.</p> |
| </div> |
| <div class="skipspace"><h4 class="sectiontitle">Updating an entry in the XML Catalog</h4><p>After you have |
| updated an entry in the XML Catalog, you may need to refresh the XML editor |
| view so that it uses the new information. To do this, click the <span class="uicontrol">Reload |
| Dependencies</span> toolbar button <img src="../images/rldgrmr.gif" /> and |
| the view will be updated using the current XML Catalog settings. You only |
| need to refresh the XML editor view when you have an XML file open that references |
| the XML Catalog entry that was updated.</p> |
| <p>For more information, refer |
| to the related concepts and tasks below.</p> |
| <p>(c) Copyright 2001, World Wide |
| Web Consortium (Massachusetts Institute of Technology, Institut National de |
| Recherche en Informatique et en Automatique, Keio University).</p> |
| </div> |
| </div> |
| |
| <div> |
| <blockquote> |
| <div class="ulchildlink"><b><a href="../topics/txmlcat.html">Adding an entry to the XML Catalog</a></b><br /> |
| </div> |
| <div class="ulchildlink"><b><a href="../topics/tedtgram.html">Updating XML files with changes made to DTDs and schemas</a></b><br /> |
| If you make changes to a DTD file or XML schema associated with |
| an XML file (that is currently open), click <span class="uicontrol">XML > Reload Dependencies</span> to |
| update the XML file with these changes.</div> |
| </blockquote> |
| <p><b class="relconceptshd">Related concepts</b><br /> |
| <a href="../topics/cwxmledt.html" title="The XML editor is a tool for creating and viewing XML files">XML editor</a><br /> |
| </p> |
| <p><b class="reltaskshd">Related tasks</b><br /> |
| <a href="../topics/tedtcnst.html" title="In the Design view, when you edit an XML file that has a set of constraints (that is, a set of rules) defined by a DTD or an XML schema, you can turn the constraints on and off to provide flexibility in the way you edit, but still maintain the validity of the document periodically.">Editing with DTD or XML schema constraints</a><br /> |
| <a href="../topics/tedtdoc.html" title="The DOCTYPE declaration in an XML file is used at the beginning of it to associate it with a DTD file. You can edit your DOCTYPE declaration to change the DTD file your XML file is associated with.">Editing your DOCTYPE declaration</a><br /> |
| <a href="../topics/txmlcat.html" title="Adding an entry to the XML Catalog"></a><br /> |
| <a href="../topics/tedtgram.html" title="If you make changes to a DTD file or XML schema associated with an XML file (that is currently open), click XML > Reload Dependencies to update the XML file with these changes.">Updating XML files with changes made to DTDs and schemas</a><br /> |
| <a href="../topics/tedtsch.html" title="Your namespace information is used to provide various information about the XML file, such as the XML schema it is associated with. ">Editing your namespace information</a><br /> |
| <a href="../topics/tedtproc.html" title="A processing instruction is a syntax in XML for passing instructions along to the application using an XML document.">Editing your XML processing instructions</a><br /> |
| <a href="../topics/txedtdes.html" title="The XML editor has a Design view, which represents the XML file simultaneously as a table and a tree. This helps make navigation and editing easier. Content and attribute values can be edited directly in the table cells, while pop-up menus on the tree elements give alternatives that are valid for that particular element.">Editing in the Design view</a><br /> |
| <a href="../topics/txedtsrc.html" title="You can use the Source view to view and work with a file's source code directly.">Editing in the Source view</a><br /> |
| </p> |
| </div><p> |
| (C) Copyright IBM Corporation 2000, 2005. All Rights Reserved. |
| </p> |
| </body> |
| </html> |