Click here to Skip to main content
6,596,602 members and growing! (20,332 online)
Email Password   helpLost your password?
Languages » XML » General     Intermediate License: The Code Project Open License (CPOL)

SNIX - Social Networking Syndication- One Profile to Rule Them All

By Lawrence Botley

SNIX - 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
Version:2 (See All)
Posted:25 Jan 2007
Updated:7 Aug 2007
Views:39,111
Bookmarked:14 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
10 votes for this article.
Popularity: 3.33 Rating: 3.33 out of 5
2 votes, 20.0%
1
2 votes, 20.0%
2

3
2 votes, 20.0%
4
4 votes, 40.0%
5

Introduction

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.

But I Only Use MySpace, Why Do I Need More Than One Social Networking Site?

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.

Bring On SNIX

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.

SNIX paradigm

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>

The XML Language Definition Schema

Here is an outline of the SNIX language:

SNIX Language Schema - Click to enlarge image

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>

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Lawrence Botley


Member
Lawrence has a Degree in Computer Science and Artificial Intelligence and a Master of Science degree in Information Technology for e-Commerce.

Right now he is in between his PHD in Augmented reality Systems and his new video Social networking platform http://www.next2friends.com which he is a co-founder of.
Occupation: Web Developer
Location: United Kingdom United Kingdom

Other popular XML articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 25 of 28 (Total in Forum: 28) (Refresh)FirstPrevNext
GeneralVery nice idea PinmemberFaris Y. Elias SHOMOU23:41 14 May '09  
Generalfacebook xml files PinmemberKingJibba9:00 28 Aug '07  
GeneralSuggestions: PinmemberScottbw23:14 7 Aug '07  
GeneralXML: Attributes vs. Elements Pinmemberrfmobile11:24 7 Aug '07  
GeneralGood Idea PinmemberSyed M Hussain17:11 26 Jul '07  
GeneralGood Idea, But... Pinmemberdickinson.jonathan0:22 10 May '07  
GeneralRe: Good Idea, But... Pinmemberdickinson.jonathan0:27 10 May '07  
GeneralRe: Good Idea, But... Pinmemberdickinson.jonathan0:29 10 May '07  
GeneralJasper Lawrence contact information PinmemberJasper Lawrence9:53 22 Apr '07  
Generalfoaf etc Pinmemberbethgranter5:33 15 Mar '07  
GeneralMmmm Debate PinmemberSacha Barber2:49 26 Jan '07  
GeneralThis is just an RSS feed PinmemberearnieSeeksTom22:58 25 Jan '07  
General[Message Deleted] PinmemberLawrence Botley23:14 25 Jan '07  
GeneralRe: This is just an RSS feed PinmemberearnieSeeksTom0:12 26 Jan '07  
GeneralRe: This is just an RSS feed PinmemberLawrence Botley0:33 26 Jan '07  
GeneralRe: This is just an RSS feed PinmembertheJazzyBrain0:52 26 Jan '07  
GeneralRe: This is just an RSS feed PinmemberearnieSeeksTom1:18 26 Jan '07  
GeneralRe: This is just an RSS feed [modified] PinmemberLawrence Botley1:28 26 Jan '07  
GeneralRe: This is just an RSS feed PinmemberearnieSeeksTom1:41 26 Jan '07  
GeneralRe: This is just an RSS feed PinmemberLawrence Botley2:24 26 Jan '07  
GeneralRe: This is just an RSS feed PinmembertheJazzyBrain2:00 26 Jan '07  
GeneralRe: This is just an RSS feed Pinmembernicovt70100521:20 30 Jan '07  
GeneralRe: This is just an RSS feed PinmemberLawrence Botley23:14 30 Jan '07  
GeneralThis idea is not new PinmemberAlexandru Lungu13:03 25 Jan '07  
GeneralRe: This idea is not new [modified] PinmemberLawrence Botley15:21 25 Jan '07  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin 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