blob: 78efa4f370e9ef4f23601e0413ca47bcf829d7c5 [file] [log] [blame]
kpriceef160682006-08-29 18:08:31 +00001<?xml version="1.0" encoding="utf-8"?>
kpriceb59c9f62008-04-02 21:24:37 +00002<!--Arbortext, Inc., 1988-2006, v.4002-->
kpriceb80ff2a2006-09-18 19:22:32 +00003<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
4 "concept.dtd">
kpriceef160682006-08-29 18:08:31 +00005<concept id="cxmlcat" xml:lang="en-us">
6<title>XML file associations with DTDs and XML schemas</title>
8<searchtitle>XML file associations with DTDs and XML schemas</searchtitle>
10<shortdesc>When an XML file is associated with a DTD or XML schema, it is
11bound by any structural rules contained in the DTD or XML schema. To be considered
12a valid XML file, a document must be accompanied by a DTD or an XML schema,
13and conform to all of the declarations in the DTD or the XML schema.</shortdesc>
kprice9623e9d2007-05-03 03:43:05 +000015<keywords><indexterm>XML catalog<indexterm>overview</indexterm></indexterm>
kpriceb59c9f62008-04-02 21:24:37 +000016<indexterm>XML files<indexterm>associations</indexterm></indexterm></keywords>
kpriceef160682006-08-29 18:08:31 +000017</metadata></prolog>
19<p>There are two different ways to associate XML files with DTDs or XML schemas.</p>
21<li>Direct association - The XML file contains either the name of a DTD in
kpriceb59c9f62008-04-02 21:24:37 +000022its doctype declaration (for example, &lt;!DOCTYPE root-element SYSTEM "<varname>dtdfile.dtd</varname>"
23>, where <varname>dtdfile.dtd</varname> is the name of the DTD file) or it
kpriceef160682006-08-29 18:08:31 +000024contains the path of an XML schema in the schemaLocation attribute of the
kpriceb59c9f62008-04-02 21:24:37 +000025XML file root element (for example, &lt;xsi:schemaLocation="<varname>schema.xsd</varname>">,
26where <varname>schema.xsd</varname> is the name of the XML schema.</li>
kpriceef160682006-08-29 18:08:31 +000027<li>XML Catalog entry - You can register DTD and XML schema files in the XML
kpriceb59c9f62008-04-02 21:24:37 +000028Catalog and associate them with a Key that represents them. You can then
29refer to a DTD or XML schema file Key from an XML file instead of referring
30directly to the DTD or XML schema file. An XML Catalog entry contains two
31parts - the Key (which represents the DTD or XML schema) and a URI (which
32contains information about the DTD or XML schema location).</li>
kpriceef160682006-08-29 18:08:31 +000033</ol>
34<section><title>How an association works</title><b>Associating an XML file
35with a DTD </b><p>If an XML file is associated with a DTD, a DOCTYPE tag such
36as the following one is included in the XML file:<codeblock>&lt;!DOCTYPE root-name PUBLIC "<varname>InvoiceId</varname>" "<varname>C:\mydtds\Invoice.dtd</varname
kpriceb59c9f62008-04-02 21:24:37 +000038</codeblock></p><p>InvoiceId is the public identifier of the DTD file. It
39is used to associate the XML file with a DTD file (in this case, the DTD file
40is Invoice.dtd). If the public identifier InvoiceId corresponds to the Key
41of the XML Catalog entry for Invoice.dtd, then the U<?Pub Caret?>RI of the
42XML Catalog entry (which contains information about the location of Invoice.dtd)
43is used to locate the DTD. Otherwise, the DOCTYPE's system identifier ("C:\mydtds\Invoice.dtd"),
kpriceef160682006-08-29 18:08:31 +000044which refers directly to the file system location of the DTD, is used to locate
kpriceb59c9f62008-04-02 21:24:37 +000045the DTD.</p><note>You can also use a system identifier as a Key in an XML
46Catalog entry. If you use a system identifier as a Key, a DOCTYPE tag such
47as the following one is included in an XML file:</note><codeblock>&lt;!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> </codeblock><p>where
48MyDTD.dtd is the system identifier that corresponds to the Key of an XML Catalog
kpriceef160682006-08-29 18:08:31 +000050<section><b>Associating an XML file with an XML schema</b><p>If an XML file
51is associated with an XML schema, one or more schema location attributes are
52included in the XML file. The information in the schemaLocation is provided
53as a "hint" to the XML processor. The following examples show schemaLocation
kpriceb59c9f62008-04-02 21:24:37 +000054attributes:</p><p> <b>Example 1 </b><codeblock>&lt;purchaseOrder xmlns=""
kpriceef160682006-08-29 18:08:31 +000055xsi:schemaLocation=" C:\myschemas\PurchaseOrder.xsd">
56&lt;shipTo country="US">
57...</codeblock> </p><p><b>Example 2 </b><codeblock>&lt;purchaseOrder xmlns=""
58xsi:schemaLocation=" PO.xsd">
59&lt;shipTo country="US">
60....</codeblock> </p><p>In Example 1, the schemaLocation 'hint' ('C:\myschemas\PurchaseOrder.xsd')
61refers directly to the file system location or URI of the XML schema. In this
62case, the schema file will be located by the XML processor directly.</p><p>In
63Example 2, the schemaLocation 'hint' ('PO.xsd') refers to an XML Catalog entry.
64PO.xsd corresponds to the <varname>Key</varname> of the XML Catalog entry
65for PurchaseOrder.xsd, and the URI of the XML Catalog entry (which contains
66information about the location of PurchaseOrder.xsd) will be used to located
67the XML schema.</p><p>In both examples, <codeph></codeph> in
68the <codeph>xsi:schemaLocation</codeph> tag is a URI that identifies the namespace
69for the XML schema.</p><p>You can also use a namespace as a Key for an XML
70Catalog entry. If you use a namespace as a Key, a schemaLocation tag such
71as the following one is included in an XML file:<codeblock>&lt;purchaseOrder xmlns:=""
72xsi:schemaLocation=" po/xsd/PurchaseOrder.xsd "></codeblock></p><p>The
73schemaLocation attribute points to both the Key and the actual location of
74the schema.</p><p><b>DTD or XML schema resides on a remote server</b></p><p>Several
75functions in the XML editor, such as validation and content assist, require
76the availability of a DTD or an XML schema. The product documentation provides
77usage information for cases when the DTD or XML schema resides on your local
78machine. However, in many cases, the DTD or XML schema can reside on a remote
79server, for example:</p><p><codeph>&lt;!DOCTYPE Catalog PUBLIC "abc/Catalog"
80""></codeph></p><p>Normally, this case
81poses no problem, because the DTD or XML schema can be retrieved from the
82remote server. However, if you are behind a firewall, and do not have a SOCKSified
83system, the workbench currently does not provide a way for you to specify
84a socks server for retrieving a DTD or XML schema. If you are unable to SOCKSify
85your system, the workaround for this problem is to retrieve a copy of the
86DTD or XML schema (using a Web browser, for example) and save that copy on
87your local machine. Then, you can either place a local copy in the same project
88as your XML file, or use the XML Catalog to associate a public identifier
kpriceb59c9f62008-04-02 21:24:37 +000089with the DTD's (local) location.</p><note>If you have an XML file associated
90with an XML schema or DTD that is elsewhere in the network, and you are working
91on a machine disconnected from the network, you can follow the steps described
92previously if you want to use content assist or validate your XML file. </note></section>
kpriceef160682006-08-29 18:08:31 +000093<section><title>Advantages of XML Catalog entry associations</title><p>If
94you create a direct association between an XML file and an XML schema or DTD
95file, any time you change the location of the schema or DTD you have to track
96down and update all of the referencing XML files with the new location of
97the DTD or schema. If, however, you associate an XML file with an XML schema
98or DTD Key, then, when you change the location of the schema or DTD, you only
99have to update the XML Catalog entry, instead of each individual XML file.</p><p>For
kpriceb59c9f62008-04-02 21:24:37 +0000100example, you have a DTD called Building.dtd, which is associated with five
kpriceef160682006-08-29 18:08:31 +0000101XML files - Office.xml, House.xml, Apartment.xml, Bank.xml, and PostOffice.xml.
102You move the DTD file Building.dtd to a new location. If you have a direction
103association between Building.dtd and all the XML files, you will have to update
104the &lt;DOCTTYPE> declaration in each XML file to reflect the new location
kpriceb80ff2a2006-09-18 19:22:32 +0000105of Building.dtd. If, however, you have an XML Catalog association, and all
106the XML files just refer to the Key of Building.dtd, then you only have to
107update the URI and all the XML files will point to the new location of Building.dtd.</p></section>
kpriceef160682006-08-29 18:08:31 +0000108<section><title>Updating an entry in the XML Catalog</title><p>After you have
109updated an entry in the XML Catalog, you might need to refresh the XML editor
110view so that it uses the new information. To do this, click the <uicontrol>Reload
111Dependencies</uicontrol> toolbar button <image href="../images/rldgrmr.gif">
112<alt>This graphic is the Reload Dependencies toolbar button</alt></image> and
113the view will be updated using the current XML Catalog settings. You only
114need to refresh the XML editor view when you have an XML file open that references
115the XML Catalog entry that was updated.</p><p>For more information, refer
kpriceb80ff2a2006-09-18 19:22:32 +0000116to the related tasks.</p></section>
kpriceef160682006-08-29 18:08:31 +0000117</conbody>
kpriceb59c9f62008-04-02 21:24:37 +0000119<?Pub *0000008359?>