blob: 455107149472ca9665bac5ea17f76dcad776c9a7 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<!-- /*******************************************************************************
* 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
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/ -->
<link rel="stylesheet" type="text/css" href="../../org.eclipse.wst.doc.user/common.css" />
<title>Using xsi:type</title>
<body id="txsityp"><a name="txsityp"><!-- --></a>
<h1 class="topictitle1">Using xsi:type</h1>
<div><p>If you have elements in your XML file whose type is a complex type,
xsi:type support in the XML editor lets you choose between the complex type
and any other complex types derived from it.</p><div class="skipspace"><p>The XML Schema specification allows you to derive types by extension.
For example, you have an XML schema and you create a complex type for it called
<kbd class="userinput">Address</kbd>. You then add some basic elements to <kbd class="userinput">Address</kbd>,
such as <kbd class="userinput">streetName</kbd> and <kbd class="userinput">city</kbd>.</p>
this, you derive (by extension) two new complex types from <kbd class="userinput">Address</kbd>
- <kbd class="userinput">USAddress</kbd> and <kbd class="userinput">UKAddress</kbd> You add a new element to <kbd class="userinput">USAddress</kbd> called
<kbd class="userinput">state</kbd>, and also a new element to
<kbd class="userinput">UKAddress</kbd> called <kbd class="userinput">postcode</kbd>.</p>
you have done this, you create two more elements - <kbd class="userinput">billTo</kbd> and <kbd class="userinput">shipTo</kbd> -
as <tt class="sysout">Address</tt> types <tt class="sysout">.</tt></p>
you create an XML instance document for an element such as <tt class="sysout">billTo</tt> or
<kbd class="userinput">Address</kbd>, an xsi:type attribute will automatically
be added to it. For example:</p>
<pre>&lt;billTo xsi:type="ipo:Address"&gt;</pre>
xsi:type attribute is used to identify derived complex types (as well as complex
types that have been derived from).</p>
<p>In the Design view of the XML editor,
a list will be available, letting you select the appropriate type definition
(<span class="uicontrol">Address</span>, <span class="uicontrol">USAddress</span>, or <span class="uicontrol">UKAddress</span>).
The guided editing for the content model will reflect the type definition
that you choose. For example, if you select <span class="uicontrol">USAddress</span> ,
your <samp class="codeph">billTo</samp> element can contain a <samp class="codeph">state</samp> element,
but it cannot contain a <samp class="codeph">postcode</samp> element.</p>
<p>The XML example
"Editing and validating XML files" demonstrates <b>xsi:type</b> support.</p>
more information about xsi:type, refer to the <b>Using Derived Types in Instance
Documents</b> section in <a href="" target="_blank">XML Schema Part 0: Primer.</a></p>
more information about validation semantics when xsi:type is used, refer to
the <b>Schema-Related Markup in Documents Being Validated</b> section
in <a href="" target="_blank">XML Schema Part 1: Structures</a> </p>