<?xml version="1.0" encoding="utf-8"?>
<!--Arbortext, Inc., 1988-2005, v.4002-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<!-- /*******************************************************************************
 * 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
 *******************************************************************************/ -->
<link href="../../org.eclipse.wst.doc.user/common.css" rel="stylesheet" type="text/css"/>
<title>Adding elements</title>
</head>
<body id="taddelm"><a name="taddelm"><!-- --></a>  <h1 class="topictitle1">Adding
elements</h1> <div><p>Elements are fundamental building blocks in XML. Element
declarations  	provide value constraints, and a description that can be used
for  	validation, as well as establishing constraining relationships between
 	related elements and attributes, and controlling substitution of elements.</p><div
class="skipspace"><p> 		The following instructions were written for the Resource
perspective,  		but they will also work in many other perspectives.</p> <p>To
add an element, follow these steps:</p> </div> <ol>
<li class="skipspace"><span>In the Outline view, right-click the content 
	model you want to work with and click <b> <span class="uicontrol">Add Element</span></b>.</span></li>
<li class="skipspace"><span>In the Properties view, type a new name for the
element in the  <b> <span class="uicontrol">Name</span></b> field.</span></li>
<li class="skipspace"><span>Specify its type information by clicking the <b> <span
class="uicontrol">Browse</span></b> button <img border="0" height="18" src="../images/Browse.gif"
width="22"/> and selecting the appropriate type.</span>  The Set Type dialog
lists all built-in and user-defined types currently  available. You can change
the <b><span class="uicontrol">Scope</span></b> of the  list by selecting
one of the following options:  <div> 	<ul>
<li><b><span class="uicontrol">Workspace</span></b>. Lists all of the  		types
available in your workspace. </li>
<li><b><span class="uicontrol">Enclosing Project</span></b>. Lists all  	
of the types available in the project that contains your file. </li>
<li>(Default) <b><span class="uicontrol">Current Resource</span>. </b> 		List
all of the types available in your current file. </li>
</ul> </div> 	</li>
<li class="skipspace"><span>(Optional) Select the appropriate value in the <b> <span
class="uicontrol">MinOccurs</span></b> field.</span> This is the number of
times the element may appear. If you want the element to be optional, select <b><span
class="uicontrol">0</span></b>. Otherwise, select  <b><span class="uicontrol">1</span></b>. </li>
<li class="skipspace"><span>(Optional) Select the appropriate value in the <b> <span
class="uicontrol">MaxOccurs</span></b> field.</span> This is the maximum number
of times the element may appear. You can select <b> <span class="uicontrol">unbounded</span></b> to
indicate there is no maximum number of occurrences.</li>
<li class="skipspace"> <div> 	(Optional) Click the <b><span class="uicontrol">Other</span></b> tab.&nbsp;
In  	this page, you can specify the following various values for the element:
	<ul>
<li><b><span class="uicontrol">block</span></b>. This field determines  	
whether the element may be replaced by an element derived from it. </li>
<li><b><span class="uicontrol">fixed/default</span>.</b> Click the <b> 		<span
class="uicontrol">Browse</span></b> button 		<img border="0" height="18" src="../images/Browse.gif"
width="22"/> and  		select the <b><span class="uicontrol">Fixed</span></b> or <b> 
	<span class="uicontrol">Default</span></b> radio button and specify an  
	appropriate value. If you select <strong>Fixed</strong>, the element has
 		a fixed value, which cannot be changed. If you select <strong>Default</strong>,
 		the element has a default value. </li>
<li><b><span class="uicontrol">form</span></b>. Use this field to  		indicate
if the appearance of this element in an instance of the XML  		schema (that
is, an XML file associated with the XML schema) must be  		qualified by a
namespace. </li>
<li><b><span class="uicontrol">maxOccurs</span></b>. This is the minimum 
		number of times the element can appear in an instance document. You can
 		specify this option here or in the General page. </li>
<li><b><span class="uicontrol">minOccurs</span></b>. This is the maximum 
		number of times the element can appear in an instance document. You can
 		specify this option here or in the General page. </li>
<li><b><span class="uicontrol">nillable</span></b>. Select <strong>true</strong> 
		if you do not want the element to be able to have any child elements,  
	only attributes. </li>
</ul> </div> 	</li>
<li class="skipspace"><span>Click the <b> <span class="uicontrol">Attributes</span></b> tab.</span> You
can use this page to add attributes, attribute references, attributes group
references, and <samp class="codeph">any</samp> attributes to your element.</li>
<li class="skipspace"><span>An attribute associates an attribute name with
a specific type and value. To add an attribute, right-click in the Attributes
page, and click<b> <span class="uicontrol">Add Attribute</span>.</b></span> You
can specify the following values for an attribute<ul>
<li><b><span class="uicontrol">fixed/default</span>.</b> Click the 	<b> <span
class="uicontrol">Browse</span></b> button 	<img border="0" height="18" src="../images/Browse.gif"
width="22"/> and select the 	<b> <span class="uicontrol">Fixed</span></b> or <b> <span
class="uicontrol">Default</span></b> radio button and specify an appropriate
value. If you select <b>Fixed</b>, the attribute has a fixed value, which
cannot be changed. If you select <b>Default</b>, the attribute has a default
value.</li>
<li><b><span class="uicontrol">form</span></b>. Use this field to indicate
if the appearance of this attribute in an instance of the XML schema must
be qualified by a namespace.</li>
<li><b><span class="uicontrol">name</span></b>. Enter the name of the attribute.</li>
<li><b><span class="uicontrol">type</span></b>. Click the <b> <span class="uicontrol">Browse</span></b> button <img
border="0" height="18" src="../images/Browse.gif" width="22"/> and select
the type of the attribute. </li>
<li><b><span class="uicontrol">use</span></b>. This field indicates how an
attribute may be used in an instance document. If you select <b>optional</b>,
the attribute may appear once, but it does not have to. If you select <b>required</b>,
the attribute must appear once. If you select <b>prohibited</b>, the attribute
must not appear. <b>Note</b>: If you selected the <span class="uicontrol">Default</span> radio
button, you must select <b>optional</b> in this field, otherwise the default
value will not be valid.</li>
</ul> </li>
<li class="skipspace"><span>An attribute reference provides a reference to
a global attribute. To add an attribute reference, right-click in the Attributes
page, and click <b> <span class="uicontrol">Add Attribute Ref</span></b>.</span> A
declaration that references a global attribute enables the referenced attribute
to appear in the instance document in the context of the referencing declaration.
The menu option to add an attribute reference only appears if there are global
attributes defined elsewhere in the document.<ol type="a">
<li><span>Select the reference, then select the global attribute you want
it to reference from the<span class="uicontrol"> <b>ref</b></span> drop down
list.</span></li>
</ol> </li>
<li class="skipspace"><span>An attribute group reference provides a reference
to an attribute group. To add an attribute group reference, right-click in
the Attributes page, and click <b> <span class="uicontrol">Add Attribute Group
Ref</span>.</b></span> A declaration that references an attribute group enables
the referenced attribute group to appear in the instance document in the context
of the referencing declaration. The menu option to add an attribute group
reference only appears if there are attribute groups defined elsewhere in
the document.<ol type="a">
<li><span>Select the reference, then select the attribute group you want it
to reference from the<span class="uicontrol"> <b>ref</b></span> drop down
list.</span></li>
</ol> </li>
<li class="skipspace"><span>An <samp class="codeph">any</samp> element enables
element content according to namespaces, and the corresponding <samp class="codeph">any</samp> attribute
 element enables attributes to appear in elements. To add an <samp class="codeph">any</samp> attribute,
right-click in the Attributes page and click <b> <span class="uicontrol">Add
Any Attribute</span>.</b></span> You can specify the following values for
an <samp class="codeph">any</samp> attribute:<ul>
<li>For a <strong>namespace</strong> value, you can select <strong>##any</strong> (this
allows any well-formed XML from any namespace), <b>##local </b> (this allows
any well-formed XML that is not declared to be in a namespace, <b>##other </b> (this
allows any well-formed XML that is not from the target namespace of the type
being defined) or <b>##targetNamespace </b> (which is shorthand for the target
namespace of the type being defined). </li>
<li>For a <b> <span class="uicontrol">processContents</span></b> value, you
can select <b>skip</b> (the XML processor will not validate the attribute
content at all), <b>lax</b> (the XML processor will validate the attribute
content as much as it can), or <b>strict </b> (the XML processor will validate
all the attribute content).</li>
</ul>  </li>
<li class="skipspace"><span>Click the <b> <span class="uicontrol">Documentation</span></b> tab
if you want to provide any information about this element.</span> The <span
class="uicontrol">Documentation</span> page is used for human readable material,
such as a description, and the <span class="uicontrol">App Info</span> page
can be used to provide information for applications.</li>
</ol> <div class="skipspace">You can add a content model to an element, which
is the representation of any data that may be contained inside the element.
For more information about working with content models, refer to the related
tasks.</div> </div>  <div><p><b class="reltaskshd">Related tasks</b><br/> <a
href="../topics/taddcmod.html" title="You can add a content model to an element, global element, a complex type, or a group. A content model is the representation of any data that may be contained inside the element, global element, complex type, or group."
>Adding a content model</a><br/> </p> </div> </body>
</html>
