Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #13 from ae589/master

Allow parsing of the atom.xsd
  • Loading branch information...
commit 4389e1586191be78f6f23fa0f0f97a3336abf6f6 2 parents 730d838 + 7b17039
@tranchis authored
View
2  README
@@ -25,7 +25,7 @@ Usage: java -jar target/xsd2thrift-1.0.one-jar.jar [--thrift] [--protobuf] [--ou
--thrift : convert to Thrift
--protobuf : convert to Protocol Buffers
- --output=FILENAME : store the result in FILENAME instead of standard output
+ --filename=FILENAME : store the result in FILENAME instead of standard output
--package=NAME : set namespace/package of the output file
View
240 contrib/atom.xsd
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xs:schema targetNamespace="http://www.w3.org/2005/Atom" elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:annotation>
+ <xs:documentation>
+ This version of the Atom schema is based on version 1.0 of the format specifications,
+ found here http://www.atomenabled.org/developers/syndication/atom-format-spec.php.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ An Atom document may have two root elements, feed and entry, as defined in section 2.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:element name="feed" type="atom:feedType"/>
+ <xs:element name="entry" type="atom:entryType"/>
+ <xs:complexType name="textType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom text construct is defined in section 3.1 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="type" >
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="text"/>
+ <xs:enumeration value="html"/>
+ <xs:enumeration value="xhtml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="personType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom person construct is defined in section 3.2 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
+ <xs:element name="uri" type="atom:uriType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="email" type="atom:emailType" minOccurs="0" maxOccurs="1" />
+ <xs:any namespace="##other"/>
+ </xs:choice>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:simpleType name="emailType">
+ <xs:annotation>
+ <xs:documentation>
+ Schema definition for an email address.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="\w+@(\w+\.)+\w+" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="feedType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom feed construct is defined in section 4.1.1 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="3" maxOccurs="unbounded">
+ <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="generator" type="atom:generatorType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="icon" type="atom:iconType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="id" type="atom:idType" minOccurs="1" maxOccurs="1" />
+ <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="logo" type="atom:logoType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="subtitle" type="atom:textType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="title" type="atom:textType" minOccurs="1" maxOccurs="1" />
+ <xs:element name="updated" type="atom:dateTimeType" minOccurs="1" maxOccurs="1" />
+ <xs:element name="entry" type="atom:entryType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="entryType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom entry construct is defined in section 4.1.2 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="content" type="atom:contentType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="id" type="atom:idType" minOccurs="1" maxOccurs="1" />
+ <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded" />
+ <xs:element name="published" type="atom:dateTimeType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="source" type="atom:textType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="summary" type="atom:textType" minOccurs="0" maxOccurs="1" />
+ <xs:element name="title" type="atom:textType" minOccurs="1" maxOccurs="1" />
+ <xs:element name="updated" type="atom:dateTimeType" minOccurs="1" maxOccurs="1" />
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="contentType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom content construct is defined in section 4.1.3 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="type" type="xs:string"/>
+ <xs:attribute name="src" type="xs:anyURI"/>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="categoryType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom cagegory construct is defined in section 4.2.2 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="term" type="xs:string" use="required"/>
+ <xs:attribute name="scheme" type="xs:anyURI" use="optional"/>
+ <xs:attribute name="label" type="xs:string" use="optional"/>
+ <xs:attributeGroup ref="atom:commonAttributes" />
+ </xs:complexType>
+ <xs:complexType name="generatorType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom generator element is defined in section 4.2.4 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="uri" use="optional" type="xs:anyURI" />
+ <xs:attribute name="version" use="optional" type="xs:string" />
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="iconType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom icon construct is defined in section 4.2.5 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="idType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom id construct is defined in section 4.2.6 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="linkType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom link construct is defined in section 3.4 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="href" use="required" type="xs:anyURI" />
+ <xs:attribute name="rel" type="xs:string" use="optional"/>
+ <xs:attribute name="type" use="optional" type="xs:string" />
+ <xs:attribute name="hreflang" use="optional" type="xs:NMTOKEN" />
+ <xs:attribute name="title" use="optional" type="xs:string" />
+ <xs:attribute name="length" use="optional" type="xs:positiveInteger" />
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="logoType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom logo construct is defined in section 4.2.8 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="sourceType">
+ <xs:annotation>
+ <xs:documentation>
+ The Atom source construct is defined in section 4.2.11 of the format spec.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="generator" type="atom:generatorType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="icon" type="atom:iconType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="id" type="atom:idType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="logo" type="atom:logoType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="subtitle" type="atom:textType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="title" type="atom:textType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="updated" type="atom:dateTimeType" minOccurs="0" maxOccurs="1"/>
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:complexType>
+ <xs:complexType name="uriType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="dateTimeType">
+ <xs:simpleContent>
+ <xs:extension base="xs:dateTime">
+ <xs:attributeGroup ref="atom:commonAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:attributeGroup name="commonAttributes">
+ <xs:attribute ref="xml:base" />
+ <xs:attribute ref="xml:lang" />
+ <xs:anyAttribute namespace="##other"/>
+ </xs:attributeGroup>
+</xs:schema>
View
4 src/main/java/com/github/tranchis/xsd2thrift/XSDParser.java
@@ -433,8 +433,8 @@ private String processComplexType(XSComplexType cType, String elementName, XSSch
while (parent != sset.getAnyType()) {
if (parent.isComplexType()) {
write(st, parent.asComplexType(), true, sset);
- parent = parent.getBaseType();
}
+ parent = parent.getBaseType();
}
processInheritance(st, cType, sset);
@@ -479,7 +479,7 @@ private void write(Struct st, XSComplexType type, boolean goingup, XSSchemaSet x
}
private void write(Struct st, XSAttributeDecl decl, boolean goingup) {
- if (decl.getType().isRestriction() && decl.getType().getName() != null && !basicTypes.contains(decl.getType().getName())) {
+ if (decl.getType().isRestriction() && (decl.getType().getName() == null || !basicTypes.contains(decl.getType().getName()))) {
String typeName = processSimpleType(decl.getType(), decl.getName());
st.addField(decl.getName(), typeName, goingup, false, decl.getFixedValue(), xsdMapping);
} else if (decl.getType().isList()) {
Please sign in to comment.
Something went wrong with that request. Please try again.