Wiki
Clone wikiBibSonomy / documentation / api / XML Schema
This page documents the XML schema which defines our data exchange format.
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- root element --> <xsd:element name="bibsonomy" type="bibsonomyXML"/> <!-- root element type --> <xsd:complexType name="bibsonomyXML"> <xsd:sequence> <xsd:choice> <!-- container --> <xsd:element name="users" type="UsersType"/> <xsd:element name="groups" type="GroupsType"/> <xsd:element name="tags" type="TagsType"/> <xsd:element name="posts" type="PostsType"/> <!-- single elements --> <xsd:element name="user" type="UserType"/> <xsd:element name="group" type="GroupType"/> <xsd:element name="post" type="PostType"/> <xsd:element name="tag" type="TagType"/> <xsd:element name="bookmark" type="BookmarkType"/> <xsd:element name="bibtex" type="BibtexType"/> <!-- error --> <xsd:element name="error" type="xsd:string"/> <!-- hashes to return when creating / updating resources --> <xsd:element name="resourcehash" type="hashType"/> <!-- user-/group-ids to return wehn creating / updating users / groups --> <xsd:element name="userid" type="xsd:string"/> <xsd:element name="groupid" type="xsd:string"/> <!-- uri to return (i.e. on uploading documents) --> <xsd:element name="uri" type="xsd:anyURI"/> </xsd:choice> </xsd:sequence> <!-- status flag: contains "ok" when request was successful, "fail" otherwise --> <xsd:attribute name="stat" type="statType"/> </xsd:complexType> <!-- this type encapsulates a list of users --> <xsd:complexType name="UsersType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="user" type="UserType"/> </xsd:sequence> <xsd:attribute name="start" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="end" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="next" type="xsd:anyURI"/> </xsd:complexType> <!-- a user --> <xsd:complexType name="UserType"> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="realname" type="xsd:string"/> <xsd:attribute name="email" type="xsd:string"/> <xsd:attribute name="homepage" type="xsd:string"/> <!-- link to details page --> <xsd:attribute name="href" type="xsd:anyURI"/> </xsd:complexType> <!-- this type encapsulates a list of groups --> <xsd:complexType name="GroupsType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="group" type="GroupType"/> </xsd:sequence> <xsd:attribute name="start" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="end" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="next" type="xsd:anyURI"/> </xsd:complexType> <!-- a group --> <xsd:complexType name="GroupType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="user" type="UserType"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="description" type="xsd:string"/> <!-- link to details page --> <xsd:attribute name="href" type="xsd:anyURI"/> </xsd:complexType> <!-- this type encapsulated a list of tags --> <xsd:complexType name="TagsType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="tag" type="TagType"/> </xsd:sequence> <xsd:attribute name="start" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="end" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="next" type="xsd:anyURI"/> </xsd:complexType> <!-- a tag --> <xsd:complexType name="TagType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="subTags" type="TagsType"/> <xsd:element maxOccurs="unbounded" minOccurs="0" name="superTags" type="TagsType"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> <xsd:attribute name="globalcount" type="positiveIntegerIncludingZero"/> <xsd:attribute name="usercount" type="positiveIntegerIncludingZero"/> <!-- link to details page --> <xsd:attribute name="href" type="xsd:anyURI"/> </xsd:complexType> <!-- this type encapsulated a list of posts --> <xsd:complexType name="PostsType"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="post" type="PostType"/> </xsd:sequence> <xsd:attribute name="start" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="end" type="positiveIntegerIncludingZero" use="required"/> <xsd:attribute name="next" type="xsd:anyURI"/> </xsd:complexType> <!-- a post --> <xsd:complexType name="PostType"> <xsd:sequence> <xsd:element name="user" type="UserType"/> <xsd:element maxOccurs="unbounded" minOccurs="0" name="group" type="GroupType"/> <!-- Note: a post must have at least one tag --> <xsd:element maxOccurs="unbounded" name="tag" type="TagType"/> <xsd:choice> <xsd:element name="bookmark" maxOccurs="1" type="BookmarkType"/> <xsd:element name="bibtex" maxOccurs="1" type="BibtexType"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="description" type="xsd:string"/> <xsd:attribute name="postingdate" type="xsd:dateTime"/> </xsd:complexType> <!-- a bookmark --> <xsd:complexType name="BookmarkType"> <xsd:attribute name="title" type="xsd:string" use="required"/> <xsd:attribute name="url" type="xsd:anyURI" use="required"/> <!-- hash value identifying this resource --> <xsd:attribute name="interhash" type="xsd:string"/> <xsd:attribute name="intrahash" type="xsd:string"/> <!-- link to all posts of this bookmark --> <xsd:attribute name="href" type="xsd:anyURI"/> </xsd:complexType> <!-- a bibtex --> <xsd:complexType name="BibtexType"> <xsd:attribute name="title" type="xsd:string" use="required"/> <xsd:attribute name="bibtexKey" type="xsd:string" use="required"/> <xsd:attribute name="bKey" type="xsd:string"/> <xsd:attribute name="misc" type="xsd:string"/> <xsd:attribute name="bibtexAbstract" type="xsd:string"/> <xsd:attribute name="entrytype" type="xsd:string" use="required"/> <xsd:attribute name="address" type="xsd:string"/> <xsd:attribute name="annote" type="xsd:string"/> <xsd:attribute name="author" type="xsd:string"/> <xsd:attribute name="booktitle" type="xsd:string"/> <xsd:attribute name="chapter" type="xsd:string"/> <xsd:attribute name="crossref" type="xsd:string"/> <xsd:attribute name="edition" type="xsd:string"/> <xsd:attribute name="editor" type="xsd:string"/> <xsd:attribute name="howpublished" type="xsd:string"/> <xsd:attribute name="institution" type="xsd:string"/> <xsd:attribute name="organization" type="xsd:string"/> <xsd:attribute name="journal" type="xsd:string"/> <xsd:attribute name="note" type="xsd:string"/> <xsd:attribute name="number" type="xsd:string"/> <xsd:attribute name="pages" type="xsd:string"/> <xsd:attribute name="publisher" type="xsd:string"/> <xsd:attribute name="school" type="xsd:string"/> <xsd:attribute name="series" type="xsd:string"/> <xsd:attribute name="volume" type="xsd:string"/> <xsd:attribute name="day" type="xsd:string"/> <xsd:attribute name="month" type="xsd:string"/> <xsd:attribute name="year" type="xsd:string" use="required"/> <xsd:attribute name="type" type="xsd:string"/> <!-- <xsd:attribute name="scraperId" type="xsd:positiveInteger"/> --> <xsd:attribute name="url" type="xsd:string"/> <xsd:attribute name="privnote" type="xsd:string"/> <!-- hash value identifying this resource --> <xsd:attribute name="intrahash" type="xsd:string"/> <xsd:attribute name="interhash" type="xsd:string"/> <!-- link to all posts of this bibtex --> <xsd:attribute name="href" type="xsd:anyURI"/> </xsd:complexType> <!-- helper type, as xsd:positiveInteger alone does not include zero --> <xsd:simpleType name="positiveIntegerIncludingZero"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> </xsd:restriction> </xsd:simpleType> <!-- type for resource hashes --> <xsd:simpleType name="hashType"> <xsd:restriction base="xsd:string"> <xsd:length value="32"/> <xsd:pattern value="([a-z]|[0-9])*"/> </xsd:restriction> </xsd:simpleType> <!-- type for status message --> <xsd:simpleType name="statType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="ok"/> <xsd:enumeration value="fail"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
Updated