<?xml version="1.0" encoding="UTF-8"?>
<!-- /*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/ -->
<!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="../../com.ibm.help.doc/swg_info_common.css" />
<title>DTD editor</title>
<script language="JavaScript">
    function popup_window( url, id, width, height )
    {
      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
      popup.focus();
    }
</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
<body id="cdtdedit"><a name="cdtdedit"><!-- --></a>

<h1 class="topictitle1">DTD editor</h1>
<div><p>After you have created or imported a DTD, you can open it in the
DTD editor (by double-clicking it in the Navigator view), a tool for viewing
and editing DTDs. You can use the DTD editor to perform a variety of tasks
such as creating, editing, and deleting DTD elements, attributes, entities,
notations, and comments</p><p>Before you can perform any of these tasks, you must create a DTD and open
it in the DTD editor. After you open the DTD, you can use the <span class="uicontrol">Outline</span> view
to create nodes and the <span class="uicontrol">Properties</span> view to provide
details about the nodes.</p>
<p></p>
<p> <b>Note</b>: In the <span class="uicontrol">Outline</span> view, you can either
work in default mode (all nodes appear in the order you added them to the
DTD in) or group the DTD nodes into the following logical groups: notations,
entities, elements, and other, by clicking the <span class="uicontrol">Group items logically</span> button <img src="../images/organize_dtd_logically.gif" />. </p>
</div>

<div>
<p>
<b class="parentlink">Parent topic:</b> <a href="../topics/tedtdtd.html" title="You can edit DTD files in both the Outline view and the Source view. Modifying the content of a DTD determines what can be used in any XML file that is associated with it.">Editing DTDs</a><br />
</p>
<p><b class="reltaskshd">Related tasks</b><br />
<a href="../topics/tcretdtd.html" title="A document type definition (DTD) contains a set of rules that can be used to validate an XML file. After you have created a DTD, you can edit it, adding declarations that define elements, attributes, entities, and notations, and how they can be used for any XML files that reference the DTD file.">Creating DTDs</a><br />
</p>
</div>
		<p>
		(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
		</p> 
</body>
</html>