blob: 2475061a0430a93aa03a088f4c709d4588906625 [file] [log] [blame]
<?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 a complex type</title>
</head>
<body id="taddcmxt"><a name="taddcmxt"><!-- --></a> <h1 class="topictitle1">Adding
complex types</h1> <div><p>A complex type allows elements in its content and
can carry attributes. Complex types can be used to help determine the appropriate
content for any instance documents generated from or associated with your
XML schema.</p> <div class="section"><p>You can add as many complex types
as you want to an XML schema.</p> <p>The following instructions were written
for the Resource perspective, but they will also work in many other perspectives.</p> <p>To
add a complex type to an XML schema, follow these steps:</p> </div> <ol>
<li class="skipspace"><span>Open your XML schema in the XML schema editor.</span></li>
<li class="skipspace"><span>In the Outline view, select your schema.</span></li>
<li class="skipspace"><span>In the Graph view, right click in the <b>Types</b> section
and click <b> <span class="uicontrol">Add Complex Type</span></b>.</span></li>
<li class="skipspace"><span>In the Properties view, type a new name for the
complex type in the <b> <span class="uicontrol">Name</span></b> field.</span></li>
<li class="skipspace"><span>Click the <b> <span class="uicontrol">Browse</span></b> button
<img border="0" height="18" src="../images/Browse.gif" width="22"/> to select
a base type for your complex type.</span> You can either set a base type for
your complex type, or you add a content model to it (which represents any
data that may be contained inside an element), but you cannot do both. For
more information about content models, refer to the related tasks.</li>
<li class="stepexpand"><span>Select <span class="uicontrol">restriction</span> or <span
class="uicontrol">extension</span> from the <span class="uicontrol">Derived
by</span> list.</span> This specifies whether your type is derived from its
base type by restriction or extension.</li>
<li class="skipspace"><span>Click the <b> <span class="uicontrol">Other</span></b> tab.</span> The
following optional values can be specified in this page:<ol type="a">
<li class="skipspace"><span>Select the appropriate value in the <b> <span
class="uicontrol">abstract</span></b> list.</span> When a complex type is
declared abstract, it cannot be used in an instance document. Click <b>true</b> if
you want the complex type to be abstract; otherwise, click <b>false</b>.</li>
<li class="skipspace"><span>Select the appropriate value in the <b> <span
class="uicontrol">block</span></b> list.</span> If you select <b>#all</b>,
the complex type may not be replaced by any derivations. If you select <b>extension</b>,
the complex type may not be replaced by any type derived from it by extending
it. If you select <b>restriction</b>, the complex type may not be replaced
by any type derived from it by restricting it.</li>
<li class="skipspace"><span> Select the appropriate value in the <b> <span
class="uicontrol">final</span></b> list.</span> If you select <b>#all</b>,
the complex type may not be derived from at all. If you select <b>extension</b>,
the complex type may not be derived from by extension. If you select <b>restriction</b>,
the complex type may not be derived from by restriction.</li>
<li class="skipspace"><span>Select the appropriate value in the <b> <span
class="uicontrol">mixed</span></b> list.</span> If you click <b>true</b>,
the complex type can contain mixed content (both character data and other
elements). If you click <b>false</b>, the complex type can only contain other
elements.</li>
</ol> </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 complex
type.</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 <span> <img border="0" height="18"
src="../images/Browse.gif" width="22"/></span> 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. When an attribute has a default value, the value of the attribute is
whatever value appears as the attribute's value in an instance document.</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><span class="uicontrol"><b>name</b>. </span>Enter the name of the attribute.</li>
<li><span class="uicontrol"><b>type</b>. </span>Click the <b> <span class="uicontrol">Browse</span></b> button <span> <img
border="0" height="18" src="../images/Browse.gif" width="22"/></span> and
select the type of the attribute. </li>
<li><span class="uicontrol"><b>use</b>. </span>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 <b> <span class="uicontrol">Default</span></b> 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 <b> <span class="uicontrol">ref</span></b> 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> &nbsp;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 <b>namespace</b> value, you can select <b>##any</b> (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 complex type.</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> <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>