RSD(Really Simple Discoverability)

RSD 는 블로그 관련 API 를 바탕으로 동작하는 원격 블로깅 툴이 편리하게 서버 API 설정을 할 수 있도록 도와주는 것이다.

, 자동으로 서버 API 의 정보를 검출하도록 하는 것이다.

http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html 를 참고하기 바란다.


RSD 는 다음과 같은 과정으로 이루어진다.

  1. 먼저 사이트(홈페이지)의 메인 HTML 파일에 아래와 같은 정보를 추가한다.
    ) <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://yourdomain.com/jangnan/?rsd" />

  2. http://yourdomain.com/jangnan/?rsd 에서는 아래와 같은 메세지를 나타낸다.
    ) 다음은 많이 쓰이는 문서에 나타나 있는 예. (아래는 표준 문서의 내용이 아니며, 실제로 웹 브라우저에 의해서 제대로 파싱이 되지가 않고 있다.)


<?xml version="1.0" ?> 
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd" >
    <service>
        <engineName>Blog Munging CMS</engineName> 
        <engineLink>http://www.blogmunging.com/ </engineLink>
        <homePageLink>http://www.userdomain.com/ </homePageLink>
        <apis>
                <api name="MetaWeblog" preferred="true" apiLink="http://example.com/xml/rpc/url" blogID="123abc" />
                <api name="Blogger" preferred="false" apiLink="http://example.com/xml/rpc/url" blogID="123abc" />
                <api name="MetaWiki" preferred="false" apiLink="http://example.com/some/other/url" blogID="123abc" />
                <api name="Antville" preferred="false" apiLink="http://example.com/yet/another/url" blogID="123abc" />
                <api name="Conversant" preferred="false" apiLink="http://example.com/xml/rpc/url" blogID="">
                    <settings>
                        <docs>http://www.conversant.com/docs/api/ </docs> 
                        <notes>Additional explanation here.</notes>
                        <setting name="service-specific-setting">a value</setting> 
                        <setting name="another-setting">another value</setting> 
                         ... 
                    </settings>
                 </api>
        </apis>
    </service>
</rsd>

RSD 는 블로깅 편집 툴을 위해서 작성하는 것이다. 전용 SOA 클라이언트는 사이트의 URL 주소 다음에 /siteapi/ 를 바로 서버 API 주소로 인식을 하면된다.

RSD 와 관련된 문서: http://www.w3schools.com/xml/xml_namespaces.asp



XML Namespaces provide a method to avoid element name conflicts.


Name Conflicts

In XML, element names are defined by the developer. This often results in a conflict when trying to mix XML documents from different XML applications.

This XML carries HTML table information:

<table>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

This XML carries information about a table (a piece of furniture):

<table>
   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>

If these XML fragments were added together, there would be a name conflict. Both contain a <table> element, but the elements have different content and meaning.

An XML parser will not know how to handle these differences.


Solving the Name Conflict Using a Prefix

Name conflicts in XML can easily be avoided using a name prefix.

This XML carries information about an HTML table, and a piece of furniture:

<h:table>
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>
<f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>

In the example above, there will be no conflict because the two <table> elements have different names.


XML Namespaces - The xmlns Attribute

When using prefixes in XML, a so-called namespace for the prefix must be defined.

The namespace is defined by the xmlns attribute in the start tag of an element.

The namespace declaration has the following syntax. xmlns:prefix="URI".

<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>
</root>

In the example above, the xmlns attribute in the <table> tag give the h: and f: prefixes a qualified namespace.

When a namespace is defined for an element, all child elements with the same prefix are associated with the same namespace.

Namespaces can be declared in the elements where they are used or in the XML root element:

<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>
<f:table>
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>
</root>

Note: The namespace URI is not used by the parser to look up information.

The purpose is to give the namespace a unique name. However, often companies use the namespace as a pointer to a web page containing namespace information.

Try to go to http://www.w3.org/TR/html4/.


Uniform Resource Identifier (URI)

A Uniform Resource Identifier (URI) is a string of characters which identifies an Internet Resource.

The most common URI is the Uniform Resource Locator (URL) which identifies an Internet domain address. Another, not so common type of URI is the Universal Resource Name (URN).

In our examples we will only use URLs.


Default Namespaces

Defining a default namespace for an element saves us from using prefixes in all the child elements. It has the following syntax:

xmlns="namespaceURI"

This XML carries HTML table information:

<table xmlns="http://www.w3.org/TR/html4/">
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

This XML carries information about a piece of furniture:

<table xmlns="http://www.w3schools.com/furniture">
   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>


Namespaces in Real Use

XSLT is an XML language that can be used to transform XML documents into other formats, like HTML.

In the XSLT document below, you can see that most of the tags are HTML tags.

The tags that are not HTML tags have the prefix xsl, identified by the namespace xmlns:xsl="http://www.w3.org/1999/XSL/Transform":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr>
      <th align="left">Title</th>
      <th align="left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

If you want to learn more about XSLT, please find our XSLT tutorial at our homepage.



struct CategoryInfo

Members

string description
string htmlUrl
string rssUrl
string title
string categoryid

struct MtCategory

Members

string categoryId
string categoryName
boolean isPrimary (optional)

struct Enclosure

Members

integer length (optional)
string type (optional)
string url (optional)

struct Source

Members

string name (optional)
string url (optional)





태초에 나는 개그이야기를 만들었다.
내말을 믿고 나를 따르면 천당,
내말을 믿지않고 나를 따르지 않으면 지옥,
나는 하늘나라(우주)에 사느니라.

그럼 난 외계인?