Inferred XML Schema files for Blogger
Well.. since this is hosted on Blogger, I thought it would be nice to start with a blogger related post....
You know, I know, we all know how difficult it is to suddenly have a new type of blogger template staring at us after the blogger upgrade. It is definitely much better in terms of standards, but coding for a flexible template with widgets can be quite painful...
In order to ease my own transition, I took one of the default templates and passed it through a translator.. so for those out there using software like XML spy, or the excellent free Eclipse IDE, here are the schema files which hopefully may help..
Schema: http://www.google.com/2005/gml/b
<?xml version="1.0"?>
<xs:schema xmlns:tns="http://www.google.com/2005/gml/b" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.google.com/2005/gml/b" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="include">
<xs:complexType>
<xs:attribute name="data" type="xs:string" use="optional" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="skin" type="xs:string" />
<xs:element name="section">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element maxOccurs="unbounded" name="widget">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="includable">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="loop">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q1="http://www.w3.org/1999/xhtml" ref="q1:ul" />
</xs:sequence>
<xs:attribute name="values" type="xs:string" use="required" />
<xs:attribute name="var" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" xmlns:q2="http://www.w3.org/1999/xhtml" ref="q2:select" />
<xs:element minOccurs="0" xmlns:q3="http://www.w3.org/1999/xhtml" ref="q3:ul" />
<xs:element minOccurs="0" xmlns:q4="http://www.w3.org/1999/xhtml" ref="q4:a" />
<xs:element minOccurs="0" xmlns:q5="http://www.w3.org/1999/xhtml" ref="q5:h4" />
<xs:element minOccurs="0" xmlns:q6="http://www.w3.org/1999/xhtml" ref="q6:span" />
<xs:element minOccurs="0" name="if">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" xmlns:q7="http://www.w3.org/1999/xhtml" ref="q7:h2" />
<xs:element minOccurs="0" name="if">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element xmlns:q8="http://www.w3.org/1999/xhtml" ref="q8:a" />
<xs:element name="else" />
<xs:element xmlns:q9="http://www.w3.org/1999/xhtml" ref="q9:div" />
</xs:choice>
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="else" />
<xs:element minOccurs="0" maxOccurs="unbounded" xmlns:q10="http://www.w3.org/1999/xhtml" ref="q10:div" />
<xs:element minOccurs="0" xmlns:q11="http://www.w3.org/1999/xhtml" ref="q11:dl" />
<xs:element minOccurs="0" xmlns:q12="http://www.w3.org/1999/xhtml" ref="q12:span" />
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" xmlns:q13="http://www.w3.org/1999/xhtml" ref="q13:p" />
<xs:element minOccurs="0" maxOccurs="unbounded" xmlns:q14="http://www.w3.org/1999/xhtml" ref="q14:div" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="include">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="var" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="locked" type="xs:boolean" use="required" />
<xs:attribute name="title" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="class" type="xs:string" use="required" />
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="maxwidgets" type="xs:unsignedByte" use="optional" />
<xs:attribute name="showaddelement" type="xs:string" use="optional" />
<xs:attribute name="preferred" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="if">
<xs:complexType mixed="true">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element xmlns:q15="http://www.w3.org/1999/xhtml" ref="q15:span" />
<xs:element xmlns:q16="http://www.google.com/2005/gml/data" ref="q16:title" />
<xs:element name="else" />
<xs:element xmlns:q17="http://www.w3.org/1999/xhtml" ref="q17:a" />
<xs:element name="if">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q18="http://www.w3.org/1999/xhtml" ref="q18:a" />
<xs:element minOccurs="0" name="else" />
<xs:element minOccurs="0" xmlns:q19="http://www.google.com/2005/gml/data" ref="q19:post.title" />
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element xmlns:q20="http://www.w3.org/1999/xhtml" ref="q20:h3" />
<xs:element xmlns:q21="http://www.google.com/2005/gml/data" ref="q21:top.authorLabel" />
<xs:element xmlns:q22="http://www.google.com/2005/gml/data" ref="q22:post.author" />
<xs:element xmlns:q23="http://www.google.com/2005/gml/data" ref="q23:top.timestampLabel" />
<xs:element xmlns:q24="http://www.google.com/2005/gml/data" ref="q24:top.commentLabel" />
<xs:element xmlns:q25="http://www.google.com/2005/gml/data" ref="q25:post.numComments" />
<xs:element xmlns:q26="http://www.google.com/2005/gml/data" ref="q26:top.commentLabelPlural" />
<xs:element xmlns:q27="http://www.google.com/2005/gml/data" ref="q27:postLabelsLabel" />
<xs:element name="loop">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q28="http://www.w3.org/1999/xhtml" ref="q28:a" />
<xs:element name="if">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="values" type="xs:string" use="required" />
<xs:attribute name="var" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element xmlns:q29="http://www.w3.org/1999/xhtml" ref="q29:h4" />
<xs:element xmlns:q30="http://www.google.com/2005/gml/data" ref="q30:commentLabel" />
<xs:element xmlns:q31="http://www.google.com/2005/gml/data" ref="q31:commentLabelPlural" />
<xs:element xmlns:q32="http://www.w3.org/1999/xhtml" ref="q32:dl" />
<xs:element xmlns:q33="http://www.google.com/2005/gml/data" ref="q33:comment.author" />
<xs:element xmlns:q34="http://www.w3.org/1999/xhtml" ref="q34:p" />
<xs:element name="include">
<xs:complexType>
<xs:attribute name="data" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element xmlns:q35="http://www.w3.org/1999/xhtml" ref="q35:ul" />
<xs:element xmlns:q36="http://www.w3.org/1999/xhtml" ref="q36:dd" />
<xs:element xmlns:q37="http://www.google.com/2005/gml/data" ref="q37:label.name" />
</xs:choice>
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="loop">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="if">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="if">
<xs:complexType>
<xs:sequence>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="data" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="include">
<xs:complexType>
<xs:attribute name="data" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" xmlns:q38="http://www.w3.org/1999/xhtml" ref="q38:h2" />
</xs:sequence>
<xs:attribute name="cond" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="data" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element xmlns:q39="http://www.w3.org/1999/xhtml" ref="q39:dt" />
<xs:element xmlns:q40="http://www.w3.org/1999/xhtml" ref="q40:dd" />
<xs:element xmlns:q41="http://www.w3.org/1999/xhtml" ref="q41:div" />
<xs:element xmlns:q42="http://www.w3.org/1999/xhtml" ref="q42:a" />
<xs:element xmlns:q43="http://www.w3.org/1999/xhtml" ref="q43:li" />
<xs:element xmlns:q44="http://www.w3.org/1999/xhtml" ref="q44:option" />
</xs:choice>
</xs:sequence>
<xs:attribute name="values" type="xs:string" use="required" />
<xs:attribute name="var" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
Schema: http://www.google.com/2005/gml/expr
<?xml version="1.0"?>
<xs:schema xmlns:tns="http://www.google.com/2005/gml/expr" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.google.com/2005/gml/expr" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="href" type="xs:string" />
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="title" type="xs:string" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="onclick" type="xs:string" />
<xs:attribute name="class" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
<xs:attribute name="alt" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="src" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="value" type="xs:string" />
</xs:schema>
Schema: http://www.google.com/2005/gml/data
<?xml version="1.0"?>
<xs:schema xmlns:tns="http://www.google.com/2005/gml/data" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.google.com/2005/gml/data" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="blog.pageTitle" />
<xs:element name="title" />
<xs:element name="description" />
<xs:element name="post.dateHeader" />
<xs:element name="newerPageTitle" />
<xs:element name="olderPageTitle" />
<xs:element name="homeMsg" />
<xs:element name="post.title" />
<xs:element name="post.body" />
<xs:element name="top.authorLabel" />
<xs:element name="post.author" />
<xs:element name="top.timestampLabel" />
<xs:element name="post.timestamp" />
<xs:element name="top.commentLabel" />
<xs:element name="post.numComments" />
<xs:element name="top.commentLabelPlural" />
<xs:element name="top.backlinkLabel" />
<xs:element name="postLabelsLabel" />
<xs:element name="label.name" />
<xs:element name="commentLabel" />
<xs:element name="commentLabelPlural" />
<xs:element name="comment.author" />
<xs:element name="commentPostedByMsg" />
<xs:element name="comment.body" />
<xs:element name="comment.timestamp" />
<xs:element name="postCommentMsg" />
<xs:element name="post.backlinksLabel" />
<xs:element name="backlink.title" />
<xs:element name="backlink.snippet" />
<xs:element name="post.authorLabel" />
<xs:element name="backlink.author" />
<xs:element name="post.timestampLabel" />
<xs:element name="backlink.timestamp" />
<xs:element name="post.createLinkLabel" />
<xs:element name="feedLinksMsg" />
<xs:element name="f.name" />
<xs:element name="f.feedType" />
<xs:element name="navMessage" />
<xs:element name="i.display-name" />
<xs:element name="displayname" />
<xs:element name="location" />
<xs:element name="aboutme" />
<xs:element name="viewProfileMsg" />
<xs:element name="i.name" />
<xs:element name="i.post-count" />
<xs:element name="i.title" />
<xs:element name="label.count" />
<xs:element name="link.name" />
</xs:schema>
It would be nice if someone is able to expand and develop it into a better schema file. My knowledge on XML schema is somewhat limited currently....
Well, anyway, hope these helps....
No comments:
Post a Comment