[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Micro XSD for Micro XML?

  • From: Michael Kay <mike@saxonica.com>
  • To: xml-dev@lists.xml.org
  • Date: Tue, 21 Dec 2010 12:41:25 +0000

Re:  Micro XSD for Micro XML?
I think you're mixing several things here, and that makes the exercise 
confusing. I would start by trying to define an XML 1.0 syntax for a 
subset of XSD that can be used to describe XML 1.0 documents, namespaces 
and all.

I think you've thrown out some babies with the bathwater. I think you 
need simple types including restrictions with facets, you need 
mixed="true|false", and you need complex-types-with-simple-content - 
though if we could avoid calling them that, we would be doing the world 
a favour! You also need to define optionality/repeatability for elements 
and attributes, and you need wildcards or open content.

There are some strange things in your grammar: an empty choice, a 
singleton choice. So it's not always clear what you're trying to say.

(Iit depends on your objectives of course. If you're just trying to 
reproduce the validation that's possible with DTDs, then it's true you 
don't need all the above - though you do still need enumeration types 
for attributes. But I've never seen any point in carefully defining a 
grammar for the markup, and saying nothing about the content.)

Michael Kay
Saxonica

On 21/12/2010 12:05, Stephen Green wrote:
> Perhaps the idea is still unpopular but I've experimented some more with a
> minimalistic 'Micro XSD' for MicroXML and come up with two possibilities.
>
> The first is as useful a subset of XSD I could produce which can pretty much
> be defined using itself (might not be error-free):
>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
> 	<xs:element name="schema">
> 		<xs:complexType>
> 			<xs:group ref="general_group" minOccurs="0" maxOccurs="unbounded"/>
> 		</xs:complexType>
> 	</xs:element>
> 	<xs:element name="element">
> 		<xs:complexType>
> 			<xs:group ref="element_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<xs:attribute name="ref" type="xs:string"/>
> 			<xs:attribute name="name" type="xs:string"/>
> 			<xs:attribute name="type" type="xs:string"/>
> 		</xs:complexType>
> 	</xs:element>
> 	<xs:element name="attribute">
> 		<xs:complexType>
> 			<xs:group ref="attribute_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<xs:attribute name="name" type="xs:string"/>
> 			<xs:attribute name="type" type="xs:string"/>
> 		</xs:complexType>
> 	</xs:element>
> 	<xs:element name="choice">
> 		<xs:complexType>
> 			<xs:group ref="choice_group" minOccurs="0" maxOccurs="unbounded"/>
> 		</xs:complexType>
> 	</xs:element>
> 	<xs:element name="group">
> 		<xs:complexType>
> 			<xs:group ref="group_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<xs:attribute name="ref" type="xs:string"/>
> 			<xs:attribute name="name" type="xs:string"/>
> 		</xs:complexType>
> 	</xs:element>
> 	<xs:group name="general_group">
> 		<xs:choice>
> 			<xs:element ref="element"/>
> 			<xs:element ref="group"/>
> 		</xs:choice>
> 	</xs:group>
> 	<xs:group name="element_group">
> 		<xs:choice>
> 			<xs:element name="complexType">
> 				<xs:complexType>
> 					<xs:group ref="complexType_group" minOccurs="0" maxOccurs="unbounded"/>
> 				</xs:complexType>
> 			</xs:element>
> 		</xs:choice>
> 	</xs:group>
> 	<xs:group name="attribute_group">
> 		<xs:choice/>
> 	</xs:group>
> 	<xs:group name="group_group">
> 		<xs:choice>
> 			<xs:element ref="choice"/>
> 		</xs:choice>
> 	</xs:group>
> 	<xs:group name="choice_group">
> 		<xs:choice>
> 			<xs:element ref="element"/>
> 			<xs:element ref="group"/>
> 		</xs:choice>
> 	</xs:group>
> 	<xs:group name="complexType_group">
> 		<xs:choice>
> 			<xs:element ref="attribute"/>
> 			<xs:element ref="group"/>
> 		</xs:choice>
> 	</xs:group>
> </xs:schema>
>
> But this still has a namespace/prefix.
>
> The second tries to do the above while keeping it to what I think
> we so far understand as MicroXML by removing the namespace
> prefix while keeping the 'xmlns' attribute (pointing it at the XSD
> namespace as a kind of namespace hint).
>
> <schema xmlns="http://www.w3.org/2001/XMLSchema">
> 	<element name="schema">
> 		<complexType>
> 			<group ref="general_group" minOccurs="0" maxOccurs="unbounded"/>
> 		</complexType>
> 	</element>
> 	<element name="element">
> 		<complexType>
> 			<group ref="element_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<attribute name="ref" type="string"/>
> 			<attribute name="name" type="string"/>
> 			<attribute name="type" type="string"/>
> 		</complexType>
> 	</element>
> 	<element name="attribute">
> 		<complexType>
> 			<group ref="attribute_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<attribute name="name" type="string"/>
> 			<attribute name="type" type="string"/>
> 		</complexType>
> 	</element>
> 	<element name="choice">
> 		<complexType>
> 			<group ref="choice_group" minOccurs="0" maxOccurs="unbounded"/>
> 		</complexType>
> 	</element>
> 	<element name="group">
> 		<complexType>
> 			<group ref="group_group" minOccurs="0" maxOccurs="unbounded"/>
> 			<attribute name="ref" type="string"/>
> 			<attribute name="name" type="string"/>
> 		</complexType>
> 	</element>
> 	<group name="general_group">
> 		<choice>
> 			<element ref="element"/>
> 			<element ref="group"/>
> 		</choice>
> 	</group>
> 	<group name="element_group">
> 		<choice>
> 			<element name="complexType">
> 				<complexType>
> 					<group ref="complexType_group" minOccurs="0" maxOccurs="unbounded"/>
> 				</complexType>
> 			</element>
> 		</choice>
> 	</group>
> 	<group name="attribute_group">
> 		<choice/>
> 	</group>
> 	<group name="group_group">
> 		<choice>
> 			<element ref="choice"/>
> 		</choice>
> 	</group>
> 	<group name="choice_group">
> 		<choice>
> 			<element ref="element"/>
> 			<element ref="group"/>
> 		</choice>
> 	</group>
> 	<group name="complexType_group">
> 		<choice>
> 			<element ref="attribute"/>
> 			<element ref="group"/>
> 		</choice>
> 	</group>
> </schema>
>
>
> I note that this does seem to break things in that an older XML editor
> won't accept it.
> The first XML Schema does at least work in an XML Editor while the
> second is deemed
> to be invalid XML and will not save. Is that correct? Does the way I'm
> trying to implement
> MicroXML (as it stands today) break XML compatibility?
>
> Regards
>
> ----
> Stephen D Green
>
>
>
> On 17 December 2010 20:39, Stephen Green<stephengreenubl@gmail.com>  wrote:
>> I agree that people might want a non-XML syntax for
>> merely defining their Micro-markup but if there is going
>> to be any validation in the Micro-parser I'd reckon they
>> wouldn't want to go to the trouble of implementing two
>> syntaxes (they will just have implemented MicroXML)
>> - unless the schema syntax is incredibly simple or
>> exists already (like JSON perhaps :-)
>>
>> I did some more rough work on a reduced 'XSD-like'
>> language (defined using its own schema language)
>> which could probably be mapped to XSD, to compact
>> relaxN, etc
>>
>> <schema name="MicroSchema-draft" version="draft2">
>>         <element name="schema">
>>                 <group>
>>                         <element ref="element" maxOccurs="unbounded" />
>>                         <element ref="group" maxOccurs="unbounded">
>>                 </group>
>>                 <attribute name="name" type="string" />
>>                 <attribute name="version" type="string" />
>>         </element>
>>         <element name="element">
>>                 <group maxOccurs="unbounded">
>>                         <element ref="element" />
>>                         <element ref="group" />
>>                 </group>
>>                 <attribute name="ref" type="string" />
>>                 <attribute name="name" type="string" />
>>                 <attribute name="type" type="string">
>>                         <!-- enumeration = string | integer | decimal | date | sequence -->
>>                 </attribute>
>>         </element>
>>         <element name="attribute">
>>                 <attribute name="ref" type="string" />
>>                 <attribute name="name" type="string" />
>>                 <attribute name="type" type="string">
>>                         <!-- enumeration = string | integer | decimal | date | sequence -->
>>                 </attribute>
>>         </element>
>> </schema>
>>
>>
>>
>>
>> ----
>> Stephen D Green
>>
>>
>>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
>



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.