Criando links hipermídia em um tipo de mídia personalizado

Atualmente, estou criando um conjunto de tipos de mídia personalizados para uma API RESTful (por exemplo, application / vnd.mycompany.foo + xml) e estou tentando identificar os prós e contras de duas maneiras diferentes de expor links hipermídia.

Se eu considerar primeiro o que outros tipos de mídia provavelmente fazem, o melhor lugar para começar é o HTML. Html me permite criar links como:

<image src="http://example.com/image.gif"/>
<a href="http://example.com/page.html"/>
<form action="http://example.com/page.html"/>
<link rel="stylesheet" type="text/css" href="theme.css" />

O interessante aqui é que, em alguns casos, há algumas tags específicas que possuem um atributo url e, em seguida, há a tag de link genérico que usa o atributo rel para definir o relacionamento.

No AtomPub, há também algumas maneiras pelas quais os recursos são vinculados

<collection href="http://example.org/blog/main" >
         <atom:title>My Blog Entries</atom:title>
         <categories href="http://example.com/cats/forMain.cats" />
</collection>

<atom:category scheme="http://example.org/extra-cats/" term="joke" />
<atom:entry>
   <link rel="edit" href="http://example.org/edit/first-post.atom"/>
</atom:entry>

A pergunta que estou fazendo é quando faz mais sentido usar um elemento de link com um relacionamento e quando faz mais sentido adicionar um atributo a um elemento existente.

por exemplo. os links AtomPub poderiam ter sido feitos

<collection>
      <link rel="source" href="http://example.org/blog/main"/>
         <atom:title>My Blog Entries</atom:title>
         <categories>
                <link rel="source" href="http://example.com/cats/forMain.cats"/>
         </categories>
</collection>

<atom:category term="joke">
     <link rel="scheme" href="http://example.org/extra-cats/"/>
<atom:category>
<atom:entry edit="http://example.org/edit/first-post.atom"/>

Como é frequentemente o caso, ao escrever esta pergunta, a resposta parece agora óbvia. Os links necessários são expostos como atributos e os opcionais como elementos. No entanto, eu estaria muito interessado em ouvir as opiniões de outras pessoas sobre como eles acham que os links devem ser representados.

questionAnswers(3)

yourAnswerToTheQuestion