- From: George Cristian Bina <george@oxygenxml.com>
- Date: Thu, 23 Jun 2005 11:56:52 +0300
- To: Hämmer Wolfgang <Wolfgang.Haemmer@swx.com>
- Cc: xmlschema-dev@w3.org
Hi Wolf, Then you can do that with substitution groups. You can define an abstract element of the expected type, make the type final and then in the instance there will be accepted only elements of that type that can substitute the abstract element. Here it is an example: sample.xsd schema: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element ref="common"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="common" abstract="true" type="CommonType"/> <xs:complexType name="CommonType" mixed="true" final="#all"> <xs:sequence> <xs:element name="LocalVariables" minOccurs="1" maxOccurs="1"> <xs:complexType> <xs:choice> <xs:sequence> <xs:element name="l_start" minOccurs="1" maxOccurs="1"/> <xs:element name="l_end" minOccurs="1" maxOccurs="1"/> </xs:sequence> <xs:sequence> <xs:element name="l_first" minOccurs="1" maxOccurs="1"/> <xs:element name="l_second" minOccurs="1" maxOccurs="1"/> <xs:element name="l_third" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="TableDrop" type="CommonType" substitutionGroup="common"/> <xs:element name="Sizes" type="CommonType" substitutionGroup="common"/> </xs:schema> valid instance: <?xml version="1.0" encoding="UTF-8"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="sample.xsd"> <TableDrop> public string code (string l_p) { return l_first + l_p + l_second + l_p + l_third; } <LocalVariables> <l_first> aString = _T("drop table </l_first> <l_second> "); hr = Oc.Execute( aString ); if ( FAILED(hr) ) _tprintf(_T("Oc.Execute drop table failed with EBSc_TAB_</l_second> <l_third> ")); </l_third> </LocalVariables> </TableDrop> <Sizes> public string code (string l_p) { return l_start + l_p + l_end;} <LocalVariables> <l_start>//TYPEDEF[attribute::name=</l_start> <l_end>]/attribute::size</l_end> </LocalVariables> </Sizes> </root> Hope that helps, George --------------------------------------------------------------------- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com Hämmer Wolfgang wrote: > Salut George, > > Thank you for your help! > > The problem with this solution is that I do not know in advance what the name of the element will be. I would like ot be able to write ... > > Expect an element x of type CommonType of unknown name. > > Best regards, Wolf > > -----Original Message----- > From: George Cristian Bina [mailto:george@oxygenxml.com] > Sent: Donnerstag, 23. Juni 2005 10:06 > To: Hämmer Wolfgang > Cc: xmlschema-dev@w3.org > Subject: Re: NewBie Question > > > Hi Wolf, > > You can reuse a type in XML schema if you define that is a global type > definition and then set that type to the elements that you want to have > the same content. Something like below: > > <xs:complexType name="CommonType" mixed="true"> > <xs:sequence> > <xs:element name="LocalVariables" minOccurs="1" maxOccurs="1"> > <xs:complexType> > <xs:choice> > <xs:sequence> > <xs:element name="l_start" minOccurs="1" > maxOccurs="1"/> > <xs:element name="l_end" minOccurs="1" > maxOccurs="1"/> > </xs:sequence> > <xs:sequence> > <xs:element name="l_first" minOccurs="1" > maxOccurs="1"/> > <xs:element name="l_second" minOccurs="1" > maxOccurs="1"/> > <xs:element name="l_third" minOccurs="1" > maxOccurs="1"/> > </xs:sequence> > </xs:choice> > </xs:complexType> > </xs:element> > </xs:sequence> > </xs:complexType> > <xs:element name="TableDrop" type="CommonType"/> > <xs:element name="Sizes" type="CommonType"/> > > Best Regards, > George > --------------------------------------------------------------------- > George Cristian Bina > <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger > http://www.oxygenxml.com > > > Hämmer Wolfgang wrote: > >>Hello, >> >>this is something I wanted to ask for a long time .... >> >> >>Is there a way using a xml schema to describe an element which name changes as in ... >> >> <TableDrop> >> public string code (string l_p) { >> return l_first + l_p + l_second + l_p + l_third; >> } >> <LocalVariables> >> <l_first> >> aString = _T("drop table </l_first> >> <l_second> >> "); hr = Oc.Execute( aString ); >> if ( FAILED(hr) ) _tprintf(_T("Oc.Execute drop table failed with EBSc_TAB_</l_second> >> <l_third> >> ")); >> </l_third> >> </LocalVariables> >> </TableDrop> >> <Sizes> >> public string code (string l_p) { return l_start + l_p + l_end;} >> <LocalVariables> >> <l_start>//TYPEDEF[attribute::name=</l_start> >> <l_end>]/attribute::size</l_end> >> </LocalVariables> >> </Sizes> >> >>The elements TableDrop and Sizes have the same structure but bear different names. >> >>I would like to write something like .... >> >> <xs:element name='.*'> >> <xs:complexType> >> <xs:sequence> >> <xs:element name="LocalVariables" minOccurs="1" maxOccurs="1"> >> <xs:complexType> >> <xs:sequence> >> <xs:element name="l_start" minOccurs="1" maxOccurs="1"> >> <xs:element name="l_end" minOccurs="1" maxOccurs="1"> >> <xs:sequence> >> </xs:complexType> >> </xs:element> >> <xs:sequence> >> </xs:complexType> >> </xs:element> >> >>Thanks for your help! >> >>Kind regards, Wolf >> >> >>This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company. >> >>
Received on Thursday, 23 June 2005 08:54:03 UTC