7.2. Elementos, Tags e Atributos

Todos os vocabulários escritos em XML compartilham certas características. Isso não surpreende, pois a filosofia por trás do XML inevitavelmente irá transparecer. Uma das manifestações mais óbvias desta filosofia é a do conteúdo e dos elementos.

A documentação, seja uma única página web ou um livro extenso, é considerada como conteúdo. Este conteúdo é então dividido e subdividido em elementos. A finalidade de adicionar markup é nomear e identificar os limites desses elementos para processamento futuro.

Por exemplo, considere um livro típico. No maior nível, o livro é um elemento. Este elemento livro contém obviamente capítulos, que podem ser considerados elementos também. Cada capítulo conterá mais elementos, como parágrafos, citações e notas de rodapé. Cada parágrafo pode conter outros elementos, identificando o conteúdo que foi um discurso direto ou o nome de um personagem na história.

Pode ser útil pensar nisso como um conteúdo por pedaços. No nível mais alto é um pedaço, o livro. Olhando um pouco mais, encontra-se mais pedaços, os capítulos individuais. Estes são segmentados em parágrafos, notas de rodapé, nomes de caracteres e assim por diante.

Observe como essa diferenciação entre diferentes elementos do conteúdo pode ser feita sem recorrer a quaisquer termos XML. É realmente surpreendentemente simples. Isso pode ser feito com uma caneta marca-texto e um livro impresso, usando cores diferentes para indicar diferentes partes do conteúdo.

É claro que não temos um marca-texto eletrônico, então precisamos de outra maneira de indicar a qual elemento cada parte do conteúdo pertence. Em idiomas escritos em XML (XHTML, DocBook, e outros) isto é feito por meio de tags.

Uma tag é usada para identificar onde um determinado elemento começa e onde o elemento termina. A tag não faz parte do próprio elemento. Como cada gramática foi normalmente escrita para marcar tipos específicos de informação, cada um reconhecerá elementos diferentes e, portanto, terá nomes diferentes para as tags.

Para um elemento chamado nome-do-elemento, a tag inicial normalmente se parecerá com <nome-do-elemento>. A tag de fechamento correspondente para este elemento é </nome-do-elemento>.

Exemplo 7.1. Utilizando um Elemento (Tag Inicial e Final)

XHTML possui um elemento para indicar que o conteúdo incluído pelo elemento é um parágrafo, chamado p.

<p>This is a paragraph.  It starts with the start tag for
  the 'p' element, and it will end with the end tag for the 'p'
  element.</p>

<p>This is another paragraph.  But this one is much shorter.</p>

Alguns elementos não possuem conteúdo. Por exemplo, em XHTML, uma linha horizontal pode ser incluída no documento. Para estes elementos vazios, XML trouxe um formato abreviado que é completamente equivalente à versão de duas tags:

Exemplo 7.2. Usando um Elemento Sem Conteúdo

XHTML tem um elemento para indicar uma linha horizontal, chamada hr. Esse elemento não possui conteúdo, e se parece com isso:

<p>One paragraph.</p>
<hr></hr>

<p>This is another paragraph.  A horizontal rule separates this
  from the previous paragraph.</p>

A versão abreviada consiste em uma única tag:

<p>One paragraph.</p>
<hr/>

<p>This is another paragraph.  A horizontal rule separates this
  from the previous paragraph.</p>

Como mostrado acima, os elementos podem conter outros elementos. No exemplo do livro anterior, o elemento livro continha elementos de capítulo, que por sua vez continham elementos de parágrafo, e assim por diante.

Exemplo 7.3. Elementos Dentro de Elementos; em
<p>This is a simple <em>paragraph</em> where some
  of the <em>words</em> have been <em>emphasized</em>.</p>

A gramática consiste em regras que descrevem quais elementos podem conter outros elementos e exatamente o que eles podem conter.

Importante:

As pessoas geralmente confundem os termos tags e elementos e usam os termos como se fossem intercambiáveis. Eles não são.

Um elemento é uma parte conceitual do seu documento. Um elemento tem início e fim definidos. As tags marcam onde o elemento começa e termina.

Quando este documento (ou qualquer pessoa com conhecimento sobre XML) refere-se a a <p> tag significa o texto literal que consiste nos três caracteres <, p, e >. Mas a frase o elemento p refere-se ao elemento inteiro.

Essa distinção é muito sutil. Mas tenha isso em mente.

Elementos podem ter atributos. Um atributo tem um nome e um valor e é usado para adicionar informações extras ao elemento. Isso pode ser uma informação que indica como o conteúdo deve ser renderizado ou pode ser algo que identifica exclusivamente essa ocorrência do elemento ou isso pode ser outra coisa também.

Os atributos de um elemento são escritos dentro da tag de início para aquele elemento, e toma o formato nome-do-atributo="valor-do-atributo".

Em XHTML, o elemento p tem um atributo chamado align, que sugere um alinhamento (justificação) do parágrafo para o programa exibindo o XHTML.

O atributo align pode ter um dos quatro valores definidos, left, center, right e justify. Se o atributo não for especificado, o padrão será left.

Exemplo 7.4. Usando um Elemento com um Atributo
<p align="left">The inclusion of the align attribute
  on this paragraph was superfluous, since the default is left.</p>

<p align="center">This may appear in the center.</p>

Alguns atributos só aceitam valores específicos, como left ou justify. Outros permitem qualquer valor.

Exemplo 7.5. Aspas Simples nos Atributos
<p align='right'>I am on the right!</p>

Os valores de atributos em XML devem ser colocados entre aspas simples ou duplas. Aspas duplas são tradicionais. Aspas simples são úteis quando o valor do atributo contém aspas duplas.

Informações sobre atributos, elementos e tags são armazenadas em arquivos de catálogo. O Projeto de Documentação usa catálogos padrão do DocBook e inclui catálogos adicionais para recursos específicos do FreeBSD. Os caminhos para os arquivos de catálogo são definidos em uma variável de ambiente para que possam ser encontradas pelas ferramentas de compilação de documentos.

7.2.1. Para Fazer...

Antes de rodar os exemplos deste documento, instale o textproc/docproj pela Coleção de Ports do FreeBSD. Este é um meta-port que baixa e instala os programas padrão e arquivos de suporte necessários para o Projeto de Documentação. Os usuários de csh(1) devem executar o rehash para que o shell reconheça os novos binários depois de instalados ou efetue logout e, em seguida, faça login novamente.

  1. Crie example.xml e insira este texto:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>An Example XHTML File</title>
      </head>
    
      <body>
        <p>This is a paragraph containing some text.</p>
    
        <p>This paragraph contains some more text.</p>
    
        <p align="right">This paragraph might be right-justified.</p>
      </body>
    </html>
  2. Tente validar esse arquivo usando um parser XML.

    O textproc/docproj inclui o parser xmllint.

    Execute xmllint para validar o documento:

    % xmllint --valid --noout example.xml

    xmllint não retorna nada se o documento for validado com sucesso.

  3. Veja o que acontece quando os elementos obrigatórios são omitidos. Exclua a linha com as tags <title> e </title>, então execute novamente a validação.

    % xmllint --valid --noout example.xml
    example.xml:5: element head: validity error : Element head content does not follow the DTD, expecting ((script | style | meta | link | object | isindex)* , ((title , (script | style | meta | link | object | isindex)* , (base , (script | style | meta | link | object | isindex)*)?) | (base , (script | style | meta | link | object | isindex)* , title , (script | style | meta | link | object | isindex)*))), got ()

    Isso mostra que o erro de validação vem da linha cinco do arquivo example.xml e que o conteúdo de <head> é a parte que não segue as regras da gramática XHTML.

    Em seguida, o xmllint mostra a linha onde o erro foi encontrado e marca a posição exata com um sinal ^.

  4. Substitua o elemento title.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.