Page 1 of 1

How to split element def -> element + typeref + ComplexType?

Posted: Thu Jun 25, 2009 10:09 am
by pstein
Assume I have a XSD with something like this inside:

<xsd:complexType name="foobar">
<xsd:sequence>
<xsd:element ... />
<xsd:element ... />
</xsd:sequence>
</xsd:complexType>

Now I want to split this type declaration and make two hierarchy levels out of it:

<xsd:complexType name="foobar" type="foobarType" />

<xsd:complexType name="foobarType">
<xsd:sequence>
<xsd:element ... />
<xsd:element ... />
</xsd:sequence>
</xsd:complexType>

How can I do this in Oxygen without editing the XSD schema file text manually in editor?

Is there e.g. a way to mark a certain <xsd:sequence>...</xsd:sequence> text and select a context menu entry similar to "extract to target XMLschema file...."

What about the other way: Merging an originally external, separate ComplexTypeby replacing an exiting type="foobarType" declaration by its target definition?

Peter

Re: How to split element def -> element + typeref + ComplexType?

Posted: Thu Jun 25, 2009 12:08 pm
by george
Hi,

I am not sure what exactly you try to accomplish as your desired result

<xsd:complexType name="foobar" type="foobarType" />

is an invalid XML Schema fragment.

If you start with a schema like below

Code: Select all


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="foobar">
<xs:complexType>
<xs:sequence>
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="x"/>
<xs:complexType name="y"/>
</xs:schema>
on the foobar element you can use the contextual action Extract global type to create a new type and set that to the foobar element automatically, resulting:

Code: Select all


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="foobar" type="foobar_type"> </xs:element>

<xs:element name="x"/>
<xs:complexType name="y"/>
<xs:complexType name="foobar_type">
<xs:sequence>
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Then you can drag and drop foobar_type next to the y type to make y type derived from foobar_type, resulting:

Code: Select all


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="foobar" type="foobar_type"> </xs:element>

<xs:element name="x"/>
<xs:complexType name="y">
<xs:complexContent>
<xs:extension base="foobar_type"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="foobar_type">
<xs:sequence>
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Further you can drag and drop the y type next to x element to set x element type to y, resulting

Code: Select all


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="foobar" type="foobar_type"> </xs:element>

<xs:element name="x" type="y"/>
<xs:complexType name="y">
<xs:complexContent>
<xs:extension base="foobar_type"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="foobar_type">
<xs:sequence>
<xs:element name="a"/>
<xs:element name="b"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Best Regards,
George

Re: How to split element def -> element + typeref + ComplexType?

Posted: Sun Jul 05, 2009 7:58 am
by pstein
george wrote: on the foobar element you can use the contextual action Extract global type to create a new type and set that to the foobar element automatically
Hi George,
I am not sure about what you are talking.
I did not found a "contextual action" (you mean context menu entry ???)
for the element. See the following snapshot.

http://img170.imageshack.us/img170/3715 ... 224300.png

Where exactly is this "contextual action"?

Thank you
Peter

Re: How to split element def -> element + typeref + ComplexType?

Posted: Mon Jul 06, 2009 2:08 pm
by george
Hi Peter,

It seems you are using an old version of oXygen - I was talking about version 10. That has a Schema tab on the schema editor where it shows a a schema diagram and those actions are available from the contextual menu (right click on Windows, CTRL+Click on Mac).
See also the following demo
http://www.oxygenxml.com/demo/XMLSchema ... iting.html

Best Regards,
George