blob: 5b6f3031746a8c86daa076cbaa94d5ff9044c4ac [file] [log] [blame]
<html>
<!-- This panel generated from the developerWorks XML tag set for tutorials, Version 3.0.2. (C) Copyright 2000, 2002 IBM Corporation. All rights reserved. -->
<head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Working with XML Schema resources in Eclipse</title></head><body vlink="663366" alink="330000" text="000000" bgcolor="ffffff"><script language="javascript">
<!--
var emailAbstract="This tutorial gives you the building blocks you need to set up and work with the XML Schema Infoset Model. It shows how to set up the development environment, create and load XML Schema models, work with namespaces, and reuse definitions across XML Schema models. This tutorial is the first of a two-part series that introduces you to XML Schema concepts and the XML Schema Infoset model.";
var justTitle="XML Schema Infoset Model, Part 1";
var tutorialPrereqs="http://www.ibm.com/developerworks/edu/os-dw-os-schema1-i.html";
var menu1blurb="Before you start";
var menu2blurb="XML Schema fundamentals";
var menu3blurb="Setting up the development environment";
var menu4blurb="Using XML Schema Infoset Model classes";
var menu5blurb="Working with XML Schema resources in Eclipse";
var menu6blurb="Working with namespaces";
var menu7blurb="You try it!";
var menu8blurb="Summary and resources";
var browser = "x";
if (navigator.userAgent.indexOf("Mozilla/4") != -1) browser = "N3";
else if (navigator.userAgent.indexOf("Mozilla/3") != -1) browser = "N3";
else browser = "x";
if (browser=="N3")
{
var menu1over=new Image(108,68);
var menu1out=new Image(108,68);
var menu2over=new Image(108,68);
var menu2out=new Image(108,68);
var menu3over=new Image(108,68);
var menu3out=new Image(108,68);
var menu4over=new Image(108,68);
var menu4out=new Image(108,68);
var menu5over=new Image(108,68);
var menu5out=new Image(108,68);
var menu6over=new Image(108,68);
var menu6out=new Image(108,68);
var menu7over=new Image(108,68);
var menu7out=new Image(108,68);
var menu8over=new Image(108,68);
var menu8out=new Image(108,68);
var topmainover=new Image(77,15);
var topmainout=new Image(77,15);
var bottommainover=new Image(77,15);
var bottommainout=new Image(77,15);
var topsectionover=new Image(98,15);
var topsectionout=new Image(98,15);
var bottomsectionover=new Image(98,15);
var bottomsectionout=new Image(98,15);
var topfeedbackover=new Image(80,15);
var topfeedbackout=new Image(80,15);
var bottomfeedbackover=new Image(80,15);
var bottomfeedbackout=new Image(80,15);
var toppreviousover=new Image(77,15);
var toppreviousout=new Image(77,15);
var bottompreviousover=new Image(77,15);
var bottompreviousout=new Image(77,15);
var topnextover=new Image(60,15);
var topnextout=new Image(60,15);
var bottomnextover=new Image(60,15);
var bottomnextout=new Image(60,15);
var topnextsectionover=new Image(108,15);
var topnextsectionout=new Image(108,15);
var bottomnextsectionover=new Image(108,15);
var bottomnextsectionout=new Image(108,15);
menu1over.src="imagemaster/himenu1.jpg";
menu1out.src="imagemaster/menu1.jpg";
menu2over.src="imagemaster/himenu2.jpg";
menu2out.src="imagemaster/menu2.jpg";
menu3over.src="imagemaster/himenu3.jpg";
menu3out.src="imagemaster/menu3.jpg";
menu4over.src="imagemaster/himenu4.jpg";
menu4out.src="imagemaster/menu4.jpg";
menu5over.src="imagemaster/himenu5.jpg";
menu5out.src="imagemaster/menu5.jpg";
menu6over.src="imagemaster/himenu6.jpg";
menu6out.src="imagemaster/menu6.jpg";
menu7over.src="imagemaster/himenu7.jpg";
menu7out.src="imagemaster/menu7.jpg";
menu8over.src="imagemaster/himenu8.jpg";
menu8out.src="imagemaster/menu8.jpg";
var mainblurb="Main menu";
var sectionblurb="Section menu";
var feedbackblurb="Give feedback on this tutorial";
var previousblurb="Go to previous panel";
var nextblurb="Go to next panel";
var nextsectionblurb="Go to next section";
topmainover.src="../default/i/h-main.gif";
topmainout.src="../default/i/main.gif";
bottommainover.src="../default/i/h-main.gif";
bottommainout.src="../default/i/main.gif";
topsectionover.src="../default/i/h-section.gif";
topsectionout.src="../default/i/section.gif";
bottomsectionover.src="../default/i/h-section.gif";
bottomsectionout.src="../default/i/section.gif";
topfeedbackover.src="../default/i/h-feedback.gif";
topfeedbackout.src="../default/i/feedback.gif";
bottomfeedbackover.src="../default/i/h-feedback.gif";
bottomfeedbackout.src="../default/i/feedback.gif";
toppreviousover.src="../default/i/h-previous.gif";
toppreviousout.src="../default/i/previous.gif";
bottompreviousover.src="../default/i/h-previous.gif";
bottompreviousout.src="../default/i/previous.gif";
topnextover.src="../default/i/h-next.gif";
topnextout.src="../default/i/next.gif";
bottomnextover.src="../default/i/h-next.gif";
bottomnextout.src="../default/i/next.gif";
topnextsectionout.src="../default/i/nextsection.gif";
topnextsectionover.src="../default/i/h-nextsection.gif";
bottomnextsectionout.src="../default/i/nextsection.gif";
bottomnextsectionover.src="../default/i/h-nextsection.gif";
}
function iOut(image)
{
if (browser=="N3")document[image].src=eval(image + "out.src");
}
function iOver(image)
{
if (browser=="N3")document[image].src=eval(image + "over.src");
}
// -->
</script><script src="../default/i/emailfriend.js" language="javascript"></script><a href="#navskip"><img border="0" alt="Skip to main content" src="../default/i/c.gif"></a><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#006699">
<td width="300">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#006699">
<td width="150"><img src="../default/i/mast_logo.gif" alt="IBM" width="160" height="47"></td>
<td width="150" background="../default/i/mgradient.gif"><font size="-2" color="#99ccff" face="Verdana, sans-serif"><b>&nbsp;</b></font><br><img src="../default/i/c.gif" width="150" height="1" alt=""></td>
</tr>
</table>
</td>
<td align="left" width="300">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100"><a href="http://www.ibm.com/shop1/"><img border="0" src="../default/i/shopibm.gif" width="100" height="25" alt="Shop"></a></td>
<td width="100"><a href="http://www.ibm.com/support/"><img border="0" src="../default/i/support.gif" width="100" height="25" alt="Support"></a></td>
<td width="100"><a href="http://www.ibm.com/download/"><img border="0" src="../default/i/downloads.gif" width="100" height="25" alt="Downloads"></a></td>
</tr>
</table>
</td>
</tr>
</table><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#000000">
<td>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#006699" width="150"><img src="../default/i/mast_lnav_sp.gif" width="150" height="21" alt=""></td>
<td colspan="4" bgcolor="#000000">
<table border="0" cellspacing="0" cellpadding="0" height="21">
<tr>
<td height="21" bgcolor="#000000" width="79" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/home/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>IBM Home</b></font></a></td>
<td bgcolor="#959595" width="1"><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
<td height="21" bgcolor="#000000" width="74" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/products/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>Products</b></font></a></td>
<td bgcolor="#959595" width="1"><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
<td height="21" bgcolor="#000000" width="81" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/services/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>Consulting</b></font></a></td>
<td bgcolor="#959595" width="1"><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
<td height="21" bgcolor="#000000" width="81" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/solutions/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>Industries</b></font></a></td>
<td bgcolor="#959595" width="1"><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
<td height="21" bgcolor="#000000" width="57" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/news/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>News</b></font></a></td>
<td bgcolor="#959595" width="1"><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
<td height="21" bgcolor="#000000" width="78" align="center"><a class="nav" style="color: #ffffff;" href="http://www.ibm.com/ibm/"><font size="-2" color="#ffffff" face="Verdana, sans-serif"><b>About IBM</b></font></a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table><table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td bgcolor="#ffffff" height="1" width="150"><img src="../default/i/c.gif" width="150" height="1" alt=""></td>
</tr>
<tr>
<td bgcolor="#cc6633" height="3" width="150"><img src="../default/i/c.gif" width="150" height="3" alt=""></td>
</tr>
<tr>
<td bgcolor="#333333" height="1" width="150"><img src="../default/i/c.gif" width="150" height="1" alt=""></td>
</tr>
<tr>
<td bgcolor="#000000" height="1" width="150"><img src="../default/i/c.gif" width="150" height="1" alt=""></td>
</tr>
</table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td><font color="#006699" face="Verdana, sans-serif" size="-1"><a href="http://www.ibm.com/developer/">IBM developerWorks</a> : <a href="http://www.ibm.com/developer/xml/">XML</a> : <a href="http://www-106.ibm.com/developerworks/views/xml/tutorials.jsp">Education - Tutorials</a></font><br><img src="imagemaster/masthead.jpg" alt="XML Schema Infoset Model, Part 1"></td><td width="*" valign="bottom" align="right"><a border="0" href="os-schema1.zip"><img alt="ZIP" border="0" src="../default/i/icon-zip.gif"></a><a border="0" href="os-schema1-ltr.pdf"><img alt="PDF (letter)" border="0" src="../default/i/icon-pdf-ltr.gif"></a><a border="0" href="os-schema1-a4.pdf"><img alt="PDF (A4)" border="0" src="../default/i/icon-pdf-a4.gif"></a><a href="javascript:newWindow()" border="0"><img alt="e-mail" border="0" src="../default/i/icon-email.gif"></a></td></tr><tr><td height="2" colspan="2"><img height="2" width="1" src="../default/i/c.gif"></td></tr></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td width="150" height="1" bgcolor="#000000" colspan="6"><img alt="" height="1" width="150" src="../default/i/c.gif"></td></tr><tr><td background="../default/i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="Main menu" border="0" src="../default/i/main.gif" name="topmain"></a></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index5.html"><img alt="Section menu" border="0" src="../default/i/section.gif" name="topsection"></a></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="os-schema1-8-3.html"><img alt="Feedback" border="0" src="../default/i/feedback.gif" name="topfeedback"></a></td><td width="100%" background="../default/i/sw-gold.gif"><img src="../default/i/c.gif"></td><td background="../default/i/sw-gold.gif"><img border="0" src="../default/i/xprevious.gif"></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="os-schema1-5-2.html"><img alt="Next" border="0" src="../default/i/next.gif" name="topnext"></a></td></tr></table><table bgcolor="ffffff" cellspacing="0" cellpadding="2" border="0" height="400" width="100%"><tr valign="bottom"><td height="25" colspan="4"><img border="0" height="25" width="562" src="imagemaster/titlebar5.jpg" alt="5. Working with XML Schema resources in Eclipse"></td></tr><tr><td bgcolor="ffffff" width="15">&nbsp;</td><td bgcolor="ffffff" width="12">&nbsp;</td><td valign="top" align="left" bgcolor="ffffff" width="*"><p><br><table cellspacing="0" cellpadding="0" border="0"><tr><td width="90%"><font size="4" face="Verdana, Arial, sans-serif"><b>Creating an XML Schema file</b></font></td><td width="200" align="right"><font size="1" face="Verdana, Arial, sans-serif"><nobr> page 1 of 3</nobr></font></td></tr></table><br><br></p><font size="2" face="Verdana, Arial, sans-serif"><p>
Before you create complicated XML Schema
structures, you should first create a skeleton XML Schema model and save it in the
Eclipse workspace. You have the option of giving
the schema a namespace or not.
</p><p>
<b>Creating an XML Schema file with no target namespace</b>
<br>
As shown in Listing 1 below, the steps for creating an XML Schema file with no target
namespace are:
<ol>
<li>
Create the
org.eclipse.emf.ecore.resource.Resource using
the new xml schema Uri
</li>
<li>Create the XSDSchema root object</li>
<li>
Set up the schema for schema namespace
information on the root XSDSchema object
</li>
<li>
Call updateElement() on the root XSDSchema
object
</li>
<li>
Add the root XSDSchema object to the resource you
created in step 1
</li>
<li>Save the resource</li>
</ol>
</p><p>
<b>Listing 1. Creating an XML Schema file with no target namespace</b>
<pre><font size="2" face="Courier New">org.eclipse.xsd.examples.command.CreateXSDWithNoTNSOperation
public XSDSchema createXSDSchema(IFile xsdFile)
{
try
{
//Get the URI of the model file.
URI fileURI = URI.createPlatformResourceURI(xsdFile.getFullPath().toString());
//Create a resource set to manage the different resources
ResourceSet resourceSet = new ResourceSetImpl();
//Create a resource for this file.
Resource resource = resourceSet.createResource(fileURI);
//Create the root XSDSchema object
XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
//set the schema for schema QName prefix to "xsd"
xsdSchema.setSchemaForSchemaQNamePrefix("xsd");
java.util.Map qNamePrefixToNamespaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
//put the following namespace in the root schema namespace map
//xsd:http://www.w3.org/2001/XMLSchema
qNamePrefixToNamespaceMap.put(xsdSchema.getSchemaForSchemaQNamePrefix(),
XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
//We call updateElement to synchronize the MOF model with the underlying DOM model
//This should only have to be done after creating a new model
xsdSchema.updateElement();
//Add the root schema to the resource that was created above
resource.getContents().add(xsdSchema);
//Save the contents of the resource to the file system.
resource.save(Collections.EMPTY_MAP);
return xsdSchema;
}
catch (Exception exception)
{
exception.printStackTrace();
}
return null;
}
</font></pre>
</p><p>
<b>Creating an XML Schema file with target namespace
"http://www.eclipse.org/xsd/examples/createxsd"</b>
<br>
As shown in Listing 2, the basic
steps in creating an XML Schema file with a target
namespace are very similar to creating aa XML Schema file
with no target namespace. The major difference is that
you set the targetNamespace() on the XSDSchema root, and
you also add a defined prefix to the root schema
<a href="os-schema1-6-1.html">QName prefix namespace map</a>, which maps to the new target namespace.
</p><p>
<b>Listing 2. Creating an XML Schema file with a target namespace</b>
<pre><font size="2" face="Courier New">org.eclipse.xsd.examples.command.CreateXSDWithTNSOperation
public XSDSchema createXSDSchema(IFile xsdFile)
{
try
{
//Get the URI of the model file.
URI fileURI = URI.createPlatformResourceURI(xsdFile.getFullPath().toString());
//Create a resource set to manage the different resources
ResourceSet resourceSet = new ResourceSetImpl();
//Create a resource for this file.
Resource resource = resourceSet.createResource(fileURI);
//Create the root XSDSchema object
XSDSchema xsdSchema = XSDFactory.eINSTANCE.createXSDSchema();
//Set the target namespace of the given schema document to
//http://www.eclipse.org/xsd/examples/createxsd
xsdSchema.setTargetNamespace("http://www.eclipse.org/xsd/examples/createxsd");
java.util.Map qNamePrefixToNamespaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
qNamePrefixToNamespaceMap.put(xsdSchema.getSchemaForSchemaQNamePrefix(),
XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
//put the following namespace in the root schema namespace map
//createxsd:http://www.eclipse.org/xsd/examples/createxsd
qNamePrefixToNamespaceMap.put("createxsd", xsdSchema.getTargetNamespace());
//We call updateElement to synchronize the MOF model with the underlying DOM model
//This should only have to be done after creating a new model
xsdSchema.updateElement();
//Add the root schema to the resource that was created above
resource.getContents().add(xsdSchema);
// Save the contents of the resource to the file system.
resource.save(Collections.EMPTY_MAP);
return xsdSchema;
}
catch (Exception exception)
{
exception.printStackTrace();
}
return null;
}
</font></pre>
</p><br></font></td></tr></table><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td background="../default/i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="Main menu" border="0" src="../default/i/main.gif" name="bottommain"></a></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index5.html"><img alt="Section menu" border="0" src="../default/i/section.gif" name="bottomsection"></a></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="os-schema1-8-3.html"><img alt="Feedback" border="0" src="../default/i/feedback.gif" name="bottomfeedback"></a></td><td width="100%" background="../default/i/sw-gold.gif"><img src="../default/i/c.gif"></td><td background="../default/i/sw-gold.gif"><img border="0" src="../default/i/xprevious.gif"></td><td background="../default/i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="os-schema1-5-2.html"><img alt="Next" border="0" src="../default/i/next.gif" name="bottomnext"></a></td></tr><tr><td width="150" height="1" bgcolor="#000000" colspan="6"><img alt="" height="1" width="150" src="../default/i/c.gif"></td></tr></table><style>
.bbg { background-color : #000000; vertical-align: middle }
a.mainlink:link { text-decoration: none; color: #ffffff; font-family: Verdana, Arial, sans-serif; font-size: 10px; font-weight: bold; }
a.mainlink:visited { text-decoration: none; color: #ffffff; font-family: Verdana, Arial, sans-serif; font-size: 10px; font-weight: bold; }
a.mainlink:hover { text-decoration: underline; color: #ffffff; font-family: Verdana, Arial, sans-serif; font-size: 10px; font-weight: bold; }
.divider { color: #999999; font-family: Verdana, Arial, sans-serif; font-size: 10px; font-weight: normal; }
</style><table width="760" cellspacing="0" cellpadding="0" border="0">
<tr>
<td><img src="../default/i/c.gif" width="1" height="1" alt=""></td>
</tr>
<tr valign="top">
<td height="21" class="bbg"><img src="../default/i/c.gif" width="1" height="1" alt=""> <a href="http://www-106.ibm.com/developerworks/cgi-bin/click.cgi?url=http://www.ibm.com/ibm/?origin=dwfooter" class="mainlink">About IBM</a><span class="divider"> | </span><a href="http://www-106.ibm.com/developerworks/cgi-bin/click.cgi?url=http://www.ibm.com/privacy/?origin=dwfooter" class="mainlink">Privacy</a><span class="divider"> | </span><a href="http://www-106.ibm.com/developerworks/cgi-bin/click.cgi?url=http://www.ibm.com/legal/?origin=dwfooter" class="mainlink">Legal</a><span class="divider"> | </span><a href="http://www-106.ibm.com/developerworks/cgi-bin/click.cgi?url=http://www.ibm.com/contact/?origin=dwfooter" class="mainlink">Contact</a></td>
</tr>
</table><script type="text/javascript" language="JavaScript1.2" src="//www.ibm.com/common/stats/stats.js"></script><noscript><img src="//i.ihost.com/i/c.gif" width="1" height="1" alt="" border="0"></noscript></body></html>