![]() |
Languages »
XML »
General
Intermediate
License: The Code Project Open License (CPOL)
SNIX - Social Networking Syndication- One Profile to Rule Them AllBy Lawrence BotleySNIX - An XML language that allows users of social networking sites to update a single profile and and can then be retrieved to automatically update their MySpace, YouTube, Facebook (or whatever) profile |
C#, Javascript, XML, HTML, Windows, .NET, ASP.NET, Visual Studio, WebForms, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
So most of us use multiple social networking sites and we're so bored of the laborious task of updating several profiles! Wouldn't we rather update one single profile?
Why not use an open source XML language to incorporate all of your profile information (including photos) into one hosted XML document that can be syndicated across multiple social networking sites? Some sites already use a "MySpace import" function that screen-scrapes a user profile page for their details… (UGH Dirty!) but creating a standardized open source XML schema or creating a web service and allowing restricted access are much better ideas!
Pre-register for SNIX and related social networking technologies.
Well, it may be true that you only wish to use a single site for simple reasons, but some social networking sites such as www.wayn.com are specific in their service and although you may wish to use the faculties to let people know where you are and what you are doing (in wayn.com instance) you may not want to fill out all your information again or even leave a link your myspace profile. Streaming Video Social networking sites such as YouTube.com and livevideo.com offer us the facility to view comments on videos, if we wish to sign up as a member, just to make a few comments we are automatically discredited by other users who may read or answer the comment knowing nothing of our background or from what influence your comment was grounded on.
So why would social networking sites such as MySpace want to use a system like this, when it encourages users to move elsewhere, breaking their technology lock-in?
Well, do we want to be locked into a particular Social networking technology? MySpace was once seen as the be-all and end-all of networking sites due to its size and media hype but has been quickly moved aside by new players such as YouTube. What's next to come? One can only fantasize what sort of medium will be driving the next craze but by forcing a standard on these giants, we would pressure them into using the standard or be left behind. Of course it may take time for Social Networking sites to take up the technology as standard but what if in the mean time we created a few Web based macros that updated our profiles by submitting the parsed XML profile information to the server or even populated HTML form textboxs and other form objects through JavaScript within the sites update page.
One thing is for sure, Social Networking sites of all sorts are cropping up fast and staying loyal to one site because of their lock-in is a shame. We should be in control of our content and not be locked in through our time and effort restraints.
SNIX - Social Networking Information Exchange is a XML document that allows users to update a hosted single XML file. Social Networking sites can then grab the XML document and update automatically the users profile. Simple!
Below is an XML document and the language schema that defines SNIX. By no means is anything set in stone, there may be items that need renaming, removing or additional nodes or attributes that need adding or refactoring but please dig in and let me know what you think! I'm fully open to all you sceptics out there who feel that this is an impractical use of technology. You know who you are.
Example of a simple SNIX feed:
<?xml version="1.0" encoding="UTF-8"?>
<profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\DOCUME~1\Main\Desktop\Schema.xsd">
<firstname>Lawrence</firstname>
<lastname>Botley</lastname>
<dob>1979-08-06</dob>
<urls>
<url>
<title>My home page</title>
<address>http://www.customcontrolfreak.com</address>
</url>
<url>
<title>MySpace</title>
<address>http://www.myspace.com/firedog55</address>
</url>
</urls>
<location>
<country>UK</country>
<city>Brighton</city>
</location>
<introduction>Hi, My name is Lawrence and I am a Computer Science and A.I.
graduate currently finishing a Masters in Information Technology
for eCommerce</introduction>
<interests>Drumming, Guitar and snowboarding</interests>
<!-- The persons favourite movies -->
<favouritemovies>
<movie name="The Terminator">
<year>1984</year>
<actors>
<actorname>Anold Schwarzengger</actorname>
<actorname>Linda Hamelton</actorname>
</actors>
<comments>Greatest movie ever made</comments>
</movie>
<movie name="Aliens">
<year>1986</year>
<actors>
<actorname>sigourney weaver</actorname>
</actors>
<comments>Kick Ass movie</comments>
</movie>
</favouritemovies>
<!-- The persons favourite tv programs-->
<favouritetvshow>
<tvshow>
<name>Nathan Barley</name>
<channel>Channel 4</channel>
</tvshow>
<tvshow>
<name>garth marenghi's Dark Place</name>
<channel>Channel 4</channel>
</tvshow>
</favouritetvshow>
<!-- The persons favourite band or artist -->
<favouritemusic>
<music>Alice in Chains</music>
</favouritemusic>
<!-- The persons favourite music albums -->
<favouritealbums>
<album>
<name>Appetite for destruction</name>
<band>Guns n roses</band>
<year>1987</year>
</album>
</favouritealbums>
<!-- The persons favourite books-->
<favouritebooks>
<book>
<title>The Singularity is near</title>
<year>2006</year>
<authors>
<name>Ray Kurzweil</name>
</authors>
</book>
<book>
<title>hacking matter</title>
<year>2004</year>
<authors>
<name>Wil McCarthy</name>
</authors>
</book>
</favouritebooks>
<!-- A list of images for the profile with comments, date and image attributes-->
<images>
<image>
<imageformat>jpg</imageformat>
<width>800</width>
<height>600</height>
<caption>Snowboarding in france</caption>
<date>2004-08-06T09:45:15</date>
<data>
FAEKLFJ389TC952TM2940UT02MXDU234M0U8249G0CU94M8
T895890TU0UTFG548390UT3YT90FHWRFEJUOYTD908JD8DD
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJ
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJK
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY570WHF5780HDK280D57H7F
</data>
</image>
<image>
<imageformat>png</imageformat>
<width>800</width>
<height>600</height>
<caption>At the Summer house</caption>
<date>2006-02-12T11:45:22</date>
<data>
FAEKLFJ389TC952TM2940UT02MXDU234M0U8249G0CU94M8
T895890TU0UTFG548390UT3YT90FHWRFEJUOYTD908JD8DD
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJ
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJK
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY57548390UT3YT90FHWRFEJU
F5890T7JYDJ9YD0WHF5780HDK280D57H7FDW47HHK47DD5
DF5797Y58D475YT7D45YTYJTY570WHF5780HDK280D57H7F
</data>
</image>
</images>
</profile>
Here is an outline of the SNIX language:
The Schema itself:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="year" type="xs:gYear"/>
<xs:element name="width" type="xs:nonNegativeInteger"/>
<xs:element name="urls">
<xs:complexType>
<xs:sequence>
<xs:element ref="url" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="url">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="address"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tvshow">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="channel"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title" type="xs:string"/>
<xs:element name="profile">
<xs:complexType>
<xs:sequence>
<xs:element ref="firstname"/>
<xs:element ref="lastname"/>
<xs:element ref="dob"/>
<xs:element ref="urls"/>
<xs:element ref="location"/>
<xs:element ref="introduction"/>
<xs:element ref="interests"/>
<xs:element ref="favouritemovies"/>
<xs:element ref="favouritetvshow"/>
<xs:element ref="favouritemusic"/>
<xs:element ref="favouritealbums"/>
<xs:element ref="favouritebooks"/>
<xs:element ref="images"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="music" type="xs:string"/>
<xs:element name="movie">
<xs:complexType>
<xs:sequence>
<xs:element ref="year"/>
<xs:element ref="actors"/>
<xs:element ref="comments"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="location">
<xs:complexType>
<xs:sequence>
<xs:element ref="country"/>
<xs:element ref="city"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="introduction" type="xs:string"/>
<xs:element name="interests" type="xs:string"/>
<xs:element name="images">
<xs:complexType>
<xs:sequence>
<xs:element ref="image" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="imageformat">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="jpg"/>
<xs:enumeration value="png"/>
<xs:enumeration value="gif"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="image">
<xs:complexType>
<xs:sequence>
<xs:element ref="imageformat"/>
<xs:element ref="width"/>
<xs:element ref="height"/>
<xs:element ref="caption"/>
<xs:element ref="date"/>
<xs:element ref="data"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="height" type="xs:nonNegativeInteger"/>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="favouritetvshow">
<xs:complexType>
<xs:sequence>
<xs:element ref="tvshow" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="favouritemusic">
<xs:complexType>
<xs:sequence>
<xs:element ref="music"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="favouritemovies">
<xs:complexType>
<xs:sequence>
<xs:element ref="movie" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="favouritebooks">
<xs:complexType>
<xs:sequence>
<xs:element ref="book" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="favouritealbums">
<xs:complexType>
<xs:sequence>
<xs:element ref="album"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dob" type="xs:date"/>
<xs:element name="date" type="xs:dateTime"/>
<xs:element name="data" type="xs:string"/>
<xs:element name="country">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="UK"/>
<xs:enumeration value="USA"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="comments" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="channel" type="xs:string"/>
<xs:element name="caption" type="xs:string"/>
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="year"/>
<xs:element ref="authors"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="band" type="xs:string"/>
<xs:element name="authors">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="album">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="band"/>
<xs:element ref="year"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="address" type="xs:anyURI"/>
<xs:element name="actors">
<xs:complexType>
<xs:sequence>
<xs:element ref="actorname" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="actorname" type="xs:string"/>
</xs:schema>
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 7 Aug 2007 Editor: Deeksha Shenoy |
Copyright 2007 by Lawrence Botley Everything else Copyright © CodeProject, 1999-2009 Web20 | Advertise on the Code Project |