Desenvolvendo Publicações do Drupal para Suportar XML Baseado em Normas

Customize a sua instalação do Drupal para suportar a publicação de documentos XML TEI (ou outros)

Clientes acadêmicos e corporativos que procuram journals digitais ou outros tipos de publicações da Web precisam regularmente de plataformas que suportam XML baseado em normas. Este tutorial explica como customizar uma implementação do Drupal para desenvolver publicações que permitem que editores, autores e usuários enviem e editem conteúdo em XML baseado em normas, no qual o padrão pode ser imposto por meio de configurações de validação no lado do servidor. Para fins ilustrativos, a discussão faz referência ao TEI XML, o padrão de marcação amplamente usado nos meios acadêmicos.

Garrick Bodine, Information Technology Manager, Penn State University

Garrick Bodine é gerente de Tecnologia da Informação do gabinete de admissão de alunos de graduação da Universidade Estadual da Pensilvânia.



Stephanie Schlitz, Linguistics Professor, Bloomsburg University of Pennsylvania

Stephanie Schlitz é professora de linguística da Universidade Bloomsburg da Pensilvânia. Colabora em vários projetos em andamento baseados em XML.



12/Abr/2011

Antes de iniciar

Acrônimos usados frequentemente

  • CMS: sistema de gerenciamento de conteúdo
  • CSS: folhas de estilo em cascata
  • FTP: protocolo de Transferência de Arquivos
  • HTML: linguagem de marcação de Hipertexto
  • SQL: linguagem de consulta estruturada
  • URL: localizador uniforme de recursos
  • XML: linguagem de marcação extensível
  • XSL: linguagem de folha de estilo extensível
  • XSLT: transformação de linguagem de folha de estilo extensível

Este tutorial é para desenvolvedores interessados em coletar e publicar documentos baseados em um formato XML padronizado. Neste caso, usamos o TEI P5 da Text Encoding Initiative, um formato amplamente usado por acadêmicos, arquivistas e bibliotecários no mundo todo para fins de arquivamento e pesquisa. Embora seja recomendável ter experiência prática com o Drupal, apresentamos conceitos fundamentais desse software e repassamos as etapas básicas da instalação. Portanto, a experiência com o Drupal não é essencial. Depois de concluir o tutorial, você terá aprendido a instalar o Drupal e a configurar os módulos Content Construction Kit (CCK) e XML Content para possibilitar vários tipos de conteúdo que podem atuar como entradas em XML, ser validados com relação ao esquema customizado e publicados de acordo com as especificações definidas nas folhas de estilo.

Sobre este tutorial

O site de amostra mencionado neste tutorial demonstra como publicar documentos que seguem rigorosamente as normas do XML customizado usando o sistema de gerenciamento de conteúdo Drupal.

Embora o Drupal não seja a única opção (nem mesmo a única opção grátis e de software livre) para implementar um sistema que permite a publicação de documentos TEI, é uma das plataformas mais usadas, executando milhares de sites no mundo todo — devido a isso, é maduro (bem testado) e bem suportado pela comunidade.

Já que o TEI P5 XML é um dos padrões publicados mais usados para fins acadêmicos, de arquivamento e de pesquisa, é o formato escolhido para este tutorial. Outros padrões XML com esquemas disponíveis, como o DocBook ou DITA XML, podem ser usados onde nós implementamos o TEI, desde que você faça as mudanças necessárias.

Entre os fatores que levam muitas pessoas (inclusive os autores) a escolher o TEI XML para fins de arquivamento e pesquisa, podemos citar a variedade de tipos de dados suportados pelas Diretrizes do TEI para Codificação e Troca de Textos Eletrônicos (ou seja, o padrão de marcação do TEI) e o desenvolvimento ativo e contínuo do padrão pela comunidade do TEI. Portanto, consideramos que a marcação do TEI é uma das melhores opções para descrever, exibir e reter documentos, oferecendo recursos de exibição potentes e flexíveis quando é usado em conjunto com as ferramentas de XML grátis e de software livre.

Pré-requisitos

Drupal CMS—O Drupal está disponível gratuitamente e pode ser transferido por download em http://drupal.org/download. Este tutorial usa o Drupal versão 6.

Você precisa de um servidor ou host da Web com PHP instalado e acesso a um banco de dados para instalar o Drupal e disponibilizar o seu site ao público ao longo da Web. Usamos Apache e MySQL. Embora esteja fora do escopo desse tutorial abordar a seleção de um provedor de hospedagem na Web ou a instalação de um servidor da Web e banco de dados local, você verá que muitos hosts da Web baratos suportam a instalação do Drupal e fornecem acesso a bancos de dados como o MySQL ou o PostgreSQL.

Além do Drupal propriamente dito, você também precisa fazer o download de alguns módulos do software para possibilitar os recursos de publicação descritos no restante do tutorial:

  • O módulo XML Content para possibilitar upload, cumprimento e orientação em relação aos recursos XML escolhidos pelo publicador do site.
  • O módulo Content Construction Kit (CCK) para o Drupal para possibilitar tipos customizados de conteúdo do Drupal — nesse caso, a inclusão de um tipo de conteúdo XML definido pelo publicador do site.
  • Também é conveniente escolher um tema do Drupal que permite alterar a aparência do site.

TEI Roma—O TEI Roma é uma ferramenta baseada na Web para gerar os esquemas XML customizados que o módulo de publicação descrito no tutorial usa para impor os padrões escolhidos pelo publicador do site.

Consulte Recursos para ver os links de download de todas as ferramentas.


Iniciação ao Drupal

O Drupal CMS é um dos mais conhecidos e mais bem suportados sistemas de gerenciamento de conteúdo do mundo e está sendo constantemente melhorado e aprimorado por sua grande coleção de módulos criados pela comunidade. Sua segurança e estabilidade foram comprovadas ao longo dos anos na Internet, o que faz dele uma boa opção para os que coletam e publicam conteúdo de arquivamento na Web. Nesta seção, você começa a configurar o ambiente do Drupal.

Instalando o Drupal e os seus módulos

Depois de fazer o download do pacote do Drupal a partir do site, é necessário descompactar o archive e fazer o upload do mesmo para o servidor da Web. Há vários métodos para executar essa etapa; nós usamos o programa cliente de FTP grátis FileZilla para passar os arquivos do Drupal para o host da Web, como mostram as Figuras 1 e 2 .

Figura 1. Faça o upload do Drupal para o seu servidor da Web
Faça o upload do Drupal para o seu servidor da Web

O nome do arquivo da instalação do Drupal geralmente inclui o número da versão (por exemplo: neste caso, é 6.19). Para os fins deste tutorial, instalaremos o Drupal na raiz do nosso Web site, digarch.org. Por isso, só fizemos o upload do conteúdo da pasta do Drupal transferida por download para o diretório-raiz da Web do nosso Web site.

Se você quer instalar o site de publicação fora do diretório-raiz da Web, é necessário fazer o upload de toda a pasta drupal-6.19 para o local escolhido no seu site. Em seguida, simplesmente renomeie a pasta que contém a instalação do Drupal para que reflita o endereço que você quer que apareça na Web, mudando de drupal-6.19 para journal, por exemplo, se você quiser que a publicação apareça como yoursite.com/journal. Desse ponto do tutorial em diante, o diretório que contém todos os arquivos do Drupal é designado como [DRUPAL_HOME].

Leia o arquivo INSTALL.TXT incluído na raiz da instalação do Drupal para garantir o cumprimento de todos os requisitos do seu ambiente de hosting da Web específico. Neste tutorial, abordamos sucintamente a instalação e configuração básicas.

Criando as configurações para o seu site

Depois de fazer o upload de todos os arquivos do Drupal para o local escolhido no seu Web site, é necessário criar o arquivo de configuração necessário para o seu site. A forma mais fácil de fazer isso é localizar o arquivo default.settings.php (que deve estar localizado no diretório [DRUPAL_HOME]/sites/default directory; veja a Figura 2) e renomeá-lo como settings.php. Também é necessário dar ao Drupal acesso ao seu banco de dados. Consulte a documentação do seu banco de dados ou as instruções do seu host da Web para concluir essa parte, já que o processo varia muito de uma instalação para outra.

Figura 2. Renomeie o arquivo default.settings.php como settings.php
Renomeie o arquivo default.settings.php como settings.php

Com essas etapas concluídas, o instalador online do Drupal pode facilitar o restante para você — basta navegar para o seu site e seguir as instruções na tela.

Instalando os módulos de conteúdo CCK e XML

Se você tem experiência com o Drupal, ficará feliz em ver que a instalação dos módulos recomendados neste tutorial é feita da mesma forma que a instalação da maioria dos outros módulos do Drupal:

  1. Faça o download dos arquivos necessários a partir da página de projeto do módulo (consulte Recursos).
    • Content Construction Kit (CCK)
    • Conteúdo XML
  2. Mova todo o diretório contendo os arquivos do módulo (geralmente o nome de diretório é igual ao nome do módulo) para o site do Drupal no diretório [DRUPAL_HOME]/sites/all/modules, criando o diretório se for necessário

Depois de fazer o upload dos módulos, navegue para a seção Modules do painel de administração do Drupal (Administer > Site Building > Modules). Para ativar cada módulo, selecione a caixa ao lado dos componentes de cada módulo que você instalou, como na Figura 3. (Os módulos selecionados incluem Content, Content Copy, Content Permissions, Fieldgroup, Node Reference, Number, Option Widgets, Text e User Reference para o CCK e XML Content para os Content Filters.)

Figura 3. Ative os módulos do Drupal
Ative os módulos do Drupal

Não se esqueça de clicar no botão Save configuration na parte inferior da página — do contrário, os módulos não são ativados.

Depois de salvar as mudanças na configuração, você recebe um diálogo de confirmação indicando que foram salvas — e, nesse caso, uma mensagem adicional (veja a Figura 4) pedindo para você configurar algumas permissões de campo. Essas permissões estão relacionadas ao módulo CCK; ele precisa saber que tipos de usuários do seu site têm permissão para editar o conteúdo já existente e futuro do site.

Figura 4. Janela de diálogo solicitando a configuração de permissões de campo e confirmando o salvamento da configuração
Janela de diálogo solicitando a configuração de permissões de campo e confirmando o salvamento da configuração

As configurações de permissões no Drupal são bem potentes, mas a maior parte delas está além do escopo deste tutorial. Já que você ainda está conectado como administrador do seu site, no momento não é necessário fazer mais modificações de permissões. Basta dizer que, se você quisesse, poderia permitir que membros autenticados do seu site (ou até mesmo usuários anônimos) enviem, editem e realizem outras tarefas de manutenção de conteúdo no site, até os campos individuais de um nó do Drupal. Provavelmente, essa última parte fará mais sentido quando você criar um exemplo de novo tipo de conteúdo à medida que realiza o tutorial.

Usando o módulo CCK para criar um tipo de conteúdo customizado

Já que você instalou e ativou o módulo CCK no Drupal, está pronto para criar tipos de conteúdo novos e customizados que são diferentes dos tipos de conteúdo integrados nos nós do Drupal, como página e história. Esse processo de criar um novo tipo permite tratar o conteúdo, as permissões e os formulários para criar o seu site de conteúdo customizado de forma diferente dos outros tipos úteis integrados do Drupal que você continua a usar nas outras seções de uso geral do site, que (por um bom motivo) não são necessariamente compostas em um XML baseado em normas.

Aqui, descrevemos a criação de um tipo de conteúdo customizado baseado no TEI XML, e chamamos o novo tipo de conteúdo de tipo TEI XML Document, pois essa é a implementação básica — e provavelmente mais comum — do TEI XML. Deve-se acrescentar que as publicações digitais frequentemente têm vários tipos de conteúdo customizados que permitem diversas formas de conteúdo, como entrevistas em áudio, apresentações de vídeo e outras formas de multimídia, com as respectivas transcrições textuais. Também é possível usar exatamente as mesmas etapas que serão descritas mais adiante, referentes ao tipo TEI XML Document, para criar esses tipos de conteúdo e ativar a entrada XML para os componentes textuais.

A primeira etapa da criação de um novo tipo de conteúdo é navegar para o menu de gerenciamento de conteúdo da seção Administer e escolher Content Types (Administer > Content management > Content types). Nessa página, você vê um link para incluir um novo tipo de conteúdo. Ao clicar em Add content type, você vê algo parecido com a Figura 5.

Figura 5. Crie um novo tipo de conteúdo
Crie um novo tipo de conteúdo

Para identificar o novo tipo de conteúdo, insira um nome (Name), tipo (Type) e descrição (Description). Preenchemos uma versão legível para seres humanos do nome do novo tipo de conteúdo, TEI XML Document— um nome que é útil para nós e para outros que venham a contribuir para o site — e uma descrição geral do tipo de conteúdo. A versão legível para máquinas do nome do tipo de conteúdo, Document, é, como a página diz, usado para desenvolver URLs, links de sites, etc. que não permitem os espaços e a pontuação de que nós humanos gostamos tanto.

Clique no botão Save content type para criar o novo tipo de conteúdo no Drupal. Você verá o nome legível para seres humanos que designou para o novo tipo no diálogo de confirmação, como mostra a Figura 6.

Figura 6. Janela de diálogo confirmando a criação do tipo de conteúdo TEI XML Document
Janela de diálogo confirmando a criação do tipo de conteúdo TEI XML Document

Você está quase pronto para incluir conteúdo no site, mas, primeiro, é necessário terminar de configurar o outro módulo que você instalou e ativou anteriormente (o módulo XML Content). Em seguida, pode configurar o tipo TEI XML Document para usar e impor o XML baseado em normas como conteúdo subjacente.

Criando um novo formato de entrada para usar o módulo XML Content

Com o módulo XML Content ativado, está na hora de configurar o Drupal para usá-lo. É necessário incluir um novo formato de entrada para informar ao Drupal que, além dos formatos de entrada padrão (geralmente, Filtered HTML e Full HTML na maioria dos tipos de nó de conteúdo), é conveniente incluir um tipo de entrada TEI XML que usa o módulo XML Content instanciado recentemente para filtrá-lo e administrá-lo.

Navegue para a tela Add Input Filter no painel de administração (Administer > Site Configuration > Input Formats) e clique em Add input format (veja a Figura 7). Nesse caso, dê ao formato de entrada o nome TEI XML, já que a sua intenção é limitar o conteúdo criado ou contribuído do tipo recém-criado TEI XML Document ao conteúdo que é bem formado e válido de acordo com o esquema XML baseado em normas do TEI que você criará mais adiante no tutorial.

Figura 7. Inclua XML como um formato de entrada
Inclua XML como um formato de entrada

Você configurou o Drupal com os módulos necessários, criou o novo tipo de conteúdo TEI XML e incluiu XML como formato de entrada. Em seguida, crie um esquema para validar os documentos XML e configure o esquema dentro do módulo XML Content.


Criando um esquema XML

Agora que você configurou o Drupal e os módulos necessários de TEI XML, está na hora de suportar o conteúdo XML desenvolvendo esquemas que validam o XML.

Por que os esquemas são importantes

As definições gerais de qualquer versão do XML que você usar descrevem a boa formação, ou seja, a sintaxe real e o layout que podem ser usados para criar um documento XML viável e legível para máquinas. O XML em si foi criado para ter uma flexibilidade quase infinita. É possível criar XML sintaticamente válido e bem formado usando elementos e atributos que ninguém viu antes. Embora essa capacidade seja, de fato, essencial para fazer com que o XML seja universalmente útil, com muita frequência, aplicações específicas do XML requerem que apenas alguns elementos, atributos e valores sejam usados. Embora existam várias formas de realizar essa tarefa, os esquemas são usados regularmente nesse contexto para garantir e impor a continuidade entre os documentos dentro de uma comunidade ou coleção.

Os esquemas XML são descrições técnicas legíveis para máquinas daquilo que constitui documentos XML válidos de acordo com as regras descritas no esquema. As regras podem ser rigorosas ou permissivas e são compiladas arbitrariamente pelos autores ou designers de documentos.

No site que estamos criando, pretendemos permitir apenas um determinado subconjunto dos elementos disponíveis dentro da marcação TEI XML. Essa restrição nos permite preparar os aspectos necessários de exibição de XSL e CSS de forma mais precisa, já que precisamos garantir que não haja tags ou atributos inesperados nos materiais. O TEI P5 XML já é uma aplicação do XML definida de forma estrita, mas podemos otimizar ainda mais as opções disponíveis para os nossos documentos usando uma ferramenta de validação da marcação de TEI fornecida pelo TEI Consortium: TEI Roma.

Usando o TEI Roma

O TEI Roma dá inicialmente várias opções como pontos de partida para a criação de um esquema TEI. É possível criar um validador customizado com base em algumas das aplicações mais usadas do TEI, como mostra a Figura 8.

Figura 8. Crie um esquema XML
Crie um esquema XML

Usamos uma versão simples e sem adulteração do TEI Lite, um subconjunto do TEI P5 que contém a maioria dos elementos mais usados que são necessários para descrever documentos em formato digital, embora seja possível usar qualquer versão do TEI produzida pela Roma com o módulo XML Content, como descreve o texto a seguir.

É importante ressaltar que a Roma oferece diversas opções de formato no fornecimento do seu esquema customizado. Embora o módulo XML Content também trate vários formatos, é necessário ter certeza de selecionar um formato compatível ao instruir o Roma a fazer a saída do arquivo. Detectamos que o formato RELAX NG (veja a Figura 9) (sintaxe XML) funciona bem com o validador do módulo XML Content, e é um formato potente e portátil, caso você precise usar o esquema para outros fins — portanto, nós o usamos no restante deste tutorial (consulte Recursos).

Figura 9. Selecione um formato de esquema
Selecione um formato de esquema

Depois que você faz o download do arquivo de esquema a partir da Roma, faça o upload dele para o local apropriado no seu Web site usando os mesmos métodos que você usou para fazer o upload do Drupal e de seus módulos. Colocamos o arquivo no local esperado do módulo XML Content, no diretório sites/all/modules/xmlcontent.

É necessário atualizar o validador do módulo XML Content para que indique que você incluiu um esquema customizado para que ele valide com relação a esse esquema todo o conteúdo XML recebido. Navegue para a seção Input Formats de Site Configuration no console de administração do Drupal (Administer > Site configuration > Input formats > TEI XML). Como mostra a Figura 10, no campo Schema File Path, digite o nome e a extensão do arquivo que você acabou de transferir por upload (como foi fornecido pela Roma, neste caso): teilite.rng.

Figura 10. Configure o esquema no módulo XML Content
Configure o esquema no módulo XML Content

Depois de fazer o upload do arquivo teilite.rng que contém o esquema customizado que você criou e para o qual ativou a validação de esquema nas definições de configuração do filtro de entrada, você está pronto para começar a fazer o upload ou para criar um conteúdo XML compatível com o TEI no seu site.


Criando conteúdo TEI XML no Drupal

Agora que você desenvolveu um esquema e o configurou na instalação do Drupal, você inclui um documento XML no seu site e o valida com relação ao esquema.

Criando conteúdo TEI XML

Agora é possível criar conteúdo TEI XML no Drupal como se costuma fazer nesse software:

  1. Navegue até Create Content nos links de navegação.
  2. Escolha TEI XML Document (o tipo de conteúdo customizado que você criou na Figura 5 — os tipos de conteúdo de página e história são os tipos integrados no Drupal).
  3. Dê um título para o seu documento.
  4. Na seção Body do formulário Document, crie o conteúdo TEI XML ou cole-o a partir de outro editor.
  5. Abaixo da seção Body onde você incluiu o conteúdo XML, abra a exibição Input format e selecione o formato TEI XML , conforme o indicado na Figura 11.
Figura 11. Selecione o XML como o formato de entrada do documento
Selecione o XML como o formato de entrada do documento

Agora, a principal diferença no processo de criação de conteúdo é que, quando você visualiza ou envia o conteúdo do tipo TEI XML Document, o módulo XML Content usa o esquema XML que você designou para o filtro de entrada anteriormente para fazer o seguinte:

  • Validar o conteúdo XML no campo Body com relação ao seu esquema
  • Garantir que seja um XML bem formado

Se há erros de formação ou de validação, você recebe mensagens que podem ajudá-lo a depurar a entrada para que seja validada. O validador primeiramente verifica a formação e relata erros fatais de XML, como mostra a Figura 12. O exemplo lista três erros fatais: tags de abertura e finalização incompatíveis referentes aos elementos p e div, dados que terminam prematuramente em uma tag div e dados que terminam prematuramente em uma tag pb.

Figura 12. Exemplo de erros de validação referentes à boa formação
Exemplo de erros de validação referentes à boa formação

Se o conteúdo do documento é um XML bem formado, ele executa as verificações de validação com relação a o esquema customizado transferido por upload e relata eventuais erros, como mostra a Figura 13. O exemplo lista três erros de validação: Expecting element publicationStmt, got sourceDesc; Element fileDesc failed to validate content e Element teiHeader failed to validate content.

Figura 13. Exemplo de erros de validação de esquema
Exemplo de erros de validação de esquema

Se o conteúdo é bem formado e validado com relação ao esquema, ele é salvo automaticamente no Drupal e é publicável (ou publicado imediatamente, caso as configurações de publicação tenham sido verificadas corretamente na tela Add Content).

Embora estejamos usando o TEI XML como formato de entrada de forma primária para um tipo de conteúdo do Drupal rotulado como TEI XML Document, não há restrições para definir a forma de uso do formato XML em um site. Depois de incluir e ativar o módulo XML Content, o XML é uma opção de formato de entrada para todos os outros tipos de conteúdo que o seu site foi customizado para publicar. Usando o filtro XML (Home > Administer > Site configuration > Input formats > TEI XML filter), é possível ajustar as configurações do módulo XML Content para permitir, exigir ou impedir conteúdo em XML por tipo de conteúdo e permissão de usuário, como mostra a Figura 14. [As opções de funções referentes ao TEI XML incluem authenticated user (selecionada) e anonymous user (não selecionada). As opções de filtro incluem XML Content XSLT filter (selecionado) e HTML corrector, HTML filter, Line break converter e URL filter (todas não selecionadas)]

Figura 14. Ativar a entrada XML por tipo de usuário
Ativar a entrada XML por tipo de usuário

Embora o módulo XML Content especifique as restrições de boa formação e validação de esquema para documentos XML, nenhuma das funcionalidades que você normalmente espera do tipo de conteúdo Drupal com o qual você está trabalhando e para o qual tem permissões (por exemplo: os tipos de conteúdo de página permitem informações de revisão, configurações de comentário, informações de autoria e opções de publicação) é afetada pelo acréscimo do módulo. Para obter mais informações sobre essas funções e o efeito delas sobre o conteúdo, leia a série Exploring Drupal V6 no developerWorks — nesse caso, especificamente a Parte 2 (consulte Recursos).

Você acabou de customizar o Drupal para que um documento XML possa ser incluído e validado no seu site. Agora você está pronto para aprender a exibi-lo usando XSLT e CSS.


Renderizando o conteúdo XML

Embora agora você tenha um conteúdo no sistema que comprovadamente segue o subconjunto de elementos que você pré-selecionou no esquema de validação, você ainda não disse ao Drupal como ele deve exibir as informações. Da forma que está, o conteúdo é mostrado na tela, mas os elementos que são desconhecidos para o navegador da Web de qualquer visitante são ignorados. Alguns dos metadados mais ricos e interessantes do documento (é por isso que escolhemos o formato TEI XML, não é?) não são representados na tela de um jeito que os leitores possam discernir, apesar de estarem disponíveis se o leitor visualizar a origem da página.

CSS e XSLT

Para representar a maior quantidade possível de metadados do conteúdo para o usuário, frequentemente são usados estilos predefinidos para representar alguns dos metadados visualmente para as pessoas que veem o conteúdo em um navegador da Web.

Há dois tipos de estilo disponíveis para fornecer informações adicionais aos clientes que visualizam os documentos no seu site:

  • XSLT— Uma tecnologia XML que pode tomar conteúdo XML como entrada e convertê-lo para outro XML para a saída, com base nas regras customizadas fornecidas na folha de estilo. O XSLT pode estar no lado do cliente (ou seja, os dados são transformados no computador do usuário, no navegador da Web) ou no lado do servidor (ou seja, os dados são convertidos no servidor da Web antes de serem passados para o cliente).
  • CSS— o CSS, uma tecnologia no lado do cliente, fornece informações ao navegador de um usuário da Web. As informações do CSS dizem como representar os elementos no código de origem de uma página que cumpre certos critérios quando o navegador exibe uma página da Web para o usuário.

O CSS e o XSLT não são mutuamente exclusivos e, na verdade, são usados juntos regularmente. Usamos ambos no nosso site para representar documentos TEI XML de forma mais rica que os documentos fornecidos pela instalação e pelas configurações padrão.

A funcionalidade XSLT que usamos é fornecida pelo módulo XML Content, que é configurável de forma análoga à configuração da validação de esquema: criar uma folha de estilo XSLT customizada, fazer o upload da mesma para o site e ativá-la na área de configuração de entrada do filtro (Administer > Site configuration > Input formats > TEI XML). Forneça o nome do arquivo da folha de estilo, myTei.xsl e o caminho no campo XSLT Script File Path (veja a Figura 15).

Figura 15. Configure uma folha de estilo no módulo XML Content
Configure uma folha de estilo no módulo XML Content

As folhas de estilo TEI

É possível usar qualquer folha de estilo XSL válida para renderizar o conteúdo XML com o módulo XML Content. A estrutura, os elementos e atributos definidos e permitidos pelo esquema XML que você criou e implementou com o módulo XML Content garantem que a estrutura do documento seja conhecida e previsível. Essa qualidade é crítica para a criação de uma folha de estilo que renderiza a versão de exibição do documento no seu site apropriadamente.

Se você não está familiarizado com folhas de estilo XSL ou, talvez, mesmo se você já esteja, é conveniente começar com um modelo base para converter o documento TEI usando XSLT. O TEI Consortium mantém um conjunto bastante grande de folhas de estilo XSL projetadas especificamente para converter documentos TEI para outros formatos, de sabores diferentes de (X)HTML para formatos Open Office e Microsoft® Word formats. Obviamente, para os fins deste tutorial, nós nos concentramos em converter o documento TEI de entrada para a saída XHTML integrada em um site do Drupal.

As folhas de estilo TEI são, na verdade, uma coleção de várias folhas de estilo XSL individuais vinculadas que contêm centenas de funções para converter e renderizar a maior parte da estrutura esperada e dos elementos encontrados em implementações padrão de documentos TEI.

Além de fornecer versões das folhas de estilo TEI que podem ser transferidas por download, o consórcio também fornece e mantém uma Interface da Web chamada Stylebear que cria uma implementação customizada das folhas de estilo TEI do consórcio. O Stylebear cria uma folha de estilo "principal" para a coleção que contém valores para as variáveis usadas nas folhas de estilo.

Criando e customizando as folhas de estilo TEI

Ao visitar o site do Stylebear, você encontra um formulário da Web com muitos campos — muitos mesmo. Os links acima de cada seção apontam para a documentação da seção. É possível que, dando uma olhada rápida, você consiga ter uma ideia da imensa flexibilidade e abrangência do TEI e das folhas de estilo TEI. Para os fins deste tutorial, não descrevemos detalhadamente o Stylebear porque ele se destina a criar versões independentes de saída de documentos TEI (e nós, por outro lado, implementamos um sistema para integrar e publicar vários documentos TEI em um Web site já existente com um gerenciamento de conteúdo integrado e todos os seus recursos para o operador).

A Figura 16 fornece uma captura de tela das informações que inserimos para criar um conjunto base de folhas de estilo para que possamos trabalhar. Essas informações incluem campos para inserir department, homeLabel, homeURL, homeWords, institution, parentURL, parentWords, searchURL, alignNavigationPanel, opção bottomNavigationPanel, feedback URL e outros detalhes.

Figura 16. Crie uma folha de estilo
Crie uma folha de estilo

Observe as outras seções do Stylebear para ver as outras opções oferecidas pela ferramenta, inclusive as opções para inserir o seu próprio JavaScript, CSS ou seus elementos HTML na saída a ser criada pelas folhas de estilo TEI modificadas pelo Stylebear (na Seção 14, Hooks). Também é possível ajustar o conteúdo textual, como uma mensagem de copyright (na Seção 9, Internationalization), por exemplo.

O arquivo de saída do Stylebear tem o nome myTei.xsl por padrão. Mantenha esse nome e faça o upload do arquivo para o seu servidor da Web. Novamente, o local padrão do diretório para os arquivos customizados usados pelo módulo XML Content (ou seja, o esquema XML e a folha de estilo XSL, mas não o conteúdo XML) é [DRUPAL_HOME]/sites/all/modules/xmlcontent, e esse é o local que você usa. O arquivo myTei.xsl simplesmente contém valores padrão para as variáveis que ele fornece às folhas de estilo que importa do Web site do TEI. Por motivos de desempenho, segurança e estabilidade, faça o download de uma cópia dos conjuntos completos de folhas de estilo a partir do Web site do TEI e instale-os na sua própria instância do Drupal.

Instalando as folhas de estilo do TEI

É possível fazer o das folhas de estilo TEI a partir do repositório SourceForge do TEI. Depois de fazer o download das folhas de estilo, descompacte-as e faça o upload das mesmas para a sua instalação do Drupal. Recomendamos que você as mantenha no mesmo local que os outros arquivos relacionados com XML (como o esquema e a folha de estilo customizada, [DRUPAL_HOME]/sites/all/modules/xmlcontent). Essa é a prática que seguimos aqui. Demos ao diretório do servidor que contém todos os arquivos .xsl nos seus respectivos diretórios aninhados o nome Stylesheets.

Já que os arquivos de folhas de estilo do TEI que nós usamos residem no servidor, é necessário modificar myTei.xsl com um link relativo para a cópia delas no Web site, em vez de apontar para o site do consórcio. Embora seja possível fazer isso dentro da ferramenta Stylebear, geralmente reservamos a mudança para depois da localização do lugar no servidor onde queremos mantê-las. Também fazemos mais duas mudanças nas linhas do XML observadas no conteúdo a seguir. As primeiras linhas do documento myTei.xsl produzido pelo Stylebear são fornecidas na Listagem 1 .

Listagem 1. Modifique a folha de estilo do Stylebear
<xsl:stylesheet 
    xmlns:tei="http://www.tei-c.org/ns/1.0"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    exclude-result-prefixes="#default tei xsl"
    version="1.0">
<!-- XSLT stylesheet to generate HTML version of TEI document.
Written by the TEI XSL generator (Sebastian Rahtz, sebastian.rahtz@oucs.ox.ac.uk)
Created on 28 Nov 2010-->
<xsl:import href="http://www.tei-c.org/release/xml/tei
/stylesheet/xhtml2/tei.xsl"/>

Como se mostra na Listagem 1, alteramos o elemento de importação para que ele aponte para as versões locais das folhas de estilo que foram transferidas por download, modificando o atributo href por meio de um caminho relativo para que aponte para a folha de estilo principal do TEI, —ou seja, a folha de estilo que importa todas as outras folhas de estilo necessárias a partir do pacote configurável transferido por download a partir do TEI Consortium: <xsl:import href="Stylesheets/xhtml/tei.xsl"/>.

Modificando o atributo de versão XSLT

Nesse ponto, talvez você tenha percebido que, além de alterar o caminho de arquivo no atributo href de remote para local, também alteramos xhtml2 para xhtml. Se você executar a saída padrão de uma folha de estilo criada com o Stylebear, provavelmente verá muitos erros na página de saída resultante. Por padrão, o Stylebear aproveita vários recursos novos do XSLT 2.0 (daí vêm o nome xhmtl2 para designar o conjunto padrão de folhas de estilo e o número da versão 2.0); entretanto, as bibliotecas XML de PHP usadas pelo Drupal e o módulo XML Content não os suportam, pelo menos na época em que este tutorial foi escrito. No entanto, duas modificações pequenas e rápidas no myTei.xsl, podem resolver a situação:

  1. Modifique o atributo de versão no primeiro elemento (xml:stylesheet) para que seja 1.0 em vez de 2.0.
  2. Como foi mencionado, o caminho no endereço do qual a folha de estilo importa o resto do conteúdo de regras XSL também deve ser alterado de /xhtml2/tei.xsl para /xhtml/tei.xsl, a fim de instruir a folha de estilo a importar a versão XSLT 1.0 das folhas de estilo do TEI (também fornecidas pelo TEI Consortium no pacote configurável transferido por download) e não a versão padrão XSLT 2.0.

Depois de instalar, modificar devidamente e ativar as folhas de estilo, todo o conteúdo inserido por meio do filtro de entrada TEI XML que você definiu é convertido da entrada TEI XML nativa para uma versão do XHTML que os navegadores da Web possam exibir e interpretar mais prontamente.

Obtendo XHTML válido

Embora a realização de tudo o que foi descrito acima deva livrar a página de saída resultante de quaisquer erros de processamento exibidos e talvez até renderize a página sem problemas visíveis, provavelmente não tem como resultado um XHTML válido na página sem mais modificações.

Como foi mencionado, as folhas de estilo do TEI que usamos foram feitas para ser independentes, mas nós as usamos para renderizar apenas uma parte de uma página HTML completa. Em outras palavras, as folhas de estilo do TEI foram projetadas para fazer a saída de um documento (X)HTML completo, dada uma entrada TEI XML. Entretanto, no nosso caso, a maior parte da página renderizada no Web site está sendo criada pelo nosso sistema de gerenciamento de conteúdo, o Drupal, e somente a parte de conteúdo customizado (corpo do nó, na terminologia do Drupal) dentro da página é convertida e renderizada usando as folhas de estilo XSLT. O resultado dessa abordagem é um documento HTML completo, que aparece sequencialmente dentro do documento HTML criado pelo Drupal. Como um elemento HTML não pode ser aninhado em outro elemento HTML diretamente no XHTML, a página do nosso site não será validada até que modifiquemos as folhas de estilo para criar conteúdo somente a partir do nosso conteúdo, e não do material clichê circundante que se exige de um documento (X)HTML independente.

Para evitar esse problema, é necessário fazer alguns ajustes nas folhas de estilo, inclusive algumas funções de substituição no documento XML principal. A maioria dos elementos HTML colocados ao redor do conteúdo pelas folhas de estilo do TEI é criada quando a folha de estilo encontra pela primeira vez o elemento TEI principal. Portanto, substituímos essa funcionalidade fornecendo um novo modelo de XSLT que chama somente os modelos filhos que o original chamou (de forma que a funcionalidade de cascata fornecida pelo elemento ainda está presente), mas as tags circundantes são suprimidas.

Você encontra a funcionalidade de modelo original em textstructure.xsl no diretório XHTML das folhas de estilo do TEI, mas a Listagem 2 mostra o que nós usamos para substituí-la incluindo-a depois de xsl:import na folha de estilo myTei.xsl.

Listagem 2. Substitua a funcionalidade da folha de estilo
<xsl:template match="tei:TEI">
    <xsl:call-template name="teiStartHook"/>
    <xsl:call-template name="javascriptHook"/>
    <xsl:call-template name="bodyHook"/>
    <xsl:call-template name="bodyJavascriptHook"/>
    <xsl:call-template name="startHook"/>
    <xsl:call-template name="simpleBody"/>
    <xsl:call-template name="stdfooter"/>
    <xsl:call-template name="bodyEndHook"/>
    <xsl:call-template name="teiEndHook"/>
</xsl:template>

Provavelmente você percebeu que, agora, quando a folha de estilo encontra o elemento-raiz TEI do documento TEI, ela simplesmente chama os outros ganchos e modelos XSL vinculados no pacote configurável de folhas de estilo, mas não cria um documento HTML totalmente novo.

É conveniente remover outras funções, dependendo dos documentos e recursos do TEI com os quais você trabalha nos documentos de origem. Embora uma discussão aprofundada de todos os recursos das folhas de estilo do TEI esteja fora do escopo deste tutorial, essas folhas de estilo estão bem documentadas internamente e no Web site do TEI.

Usando folhas de estilo XSL customizadas

O uso das folhas de estilo fornecidas pelo TEI Consortium não é obrigatório e, em muitas circunstâncias, pode não ser o método melhor ou mais conveniente. Convém projetar e implementar as suas próprias folhas de estilo XSLT, principalmente se os documentos TEI que você publica contêm um subconjunto pequeno ou muito previsível de elementos TEI. Para implementar folhas de estilo customizadas, pode-se simplesmente criar uma folha de estilo XSL, fazer o upload dela para o servidor e ajustar o caminho do módulo XML Content para a folha de estilo na seção de configuração.

Vantagens de usar as folhas de estilo do TEI

Como você viu, é fácil substituir as funções XSL contidas no pacote configurável de folhas de estilo sem perder a funcionalidade de base fornecida por anos de atualizações e melhorias realizadas pelos mantenedores das folhas de estilo. Além da conversão básica de elementos específicos do TEI para elementos HTML vagamente correspondentes ou representativos, as folhas de estilo frequentemente fornecem boas renderizações visuais e até designam atributos de classe aos elementos HTML que oferecem mais um método para que você customize facilmente os aspectos visíveis da marcação TEI subjacente com uma tecnologia que geralmente é considerada mais fácil de dominar que o XSL e, de fato, uma tecnologia que talvez você já conheça: CSS.

Usando o CSS para estilizar e renderizar o conteúdo TEI publicado

Como a maioria dos frameworks de design modernos, os temas do Drupal usam amplamente o CSS para fornecer a variação visível no site, desde as questões de tipografia e fontes até o layout das páginas e colocação das imagens.

O CSS faz isso usando seletores. Os seletores são aspectos de elementos na página que a folha de estilo usa para identificar itens de página a serem renderizados de formas específicas. Podem ser nomes de elementos (como p ou div) ou atributos (como classe ou ID). Embora o CSS também esteja fora do escopo deste tutorial, vale a pena conferir um tutorial sobre esse assunto, caso você ainda não esteja familiarizado com a tecnologia (consulte Recursos para obter um link).

O ponto importante aqui é que as folhas de estilo do TEI fornecem seletores para muitos dos elementos TEI comuns designando um atributo de classe a um elemento de amplitude que circunda o conteúdo de um elemento TEI correspondente. Provavelmente, isso parece ser mais confuso do que realmente é. Vamos examinar um exemplo.

Veja um elemento e uma construção relativamente comuns em um documento TEI: <foreign>sic</foreign>.

A saída das folhas de estilo do TEI tem como resultado o seguinte XHTML: <i><span class="foreign">sic</span></i>.

Pode-se ver que não só fornece uma renderização básica para a tag<foreign> do TEI XML (aplica itálico usando a tag <i> de XHTML), mas também a quebra em um <span> com um atributo que contém o nome do elemento TEI. Embora seja usada por padrão, <span class="foreign"> não fará diferença nenhuma na exibição do navegador; o desenvolvimento forneceu um seletor que pode ser usado para controlar os estilos de todos os elementos <foreign> dentro do documento TEI publicado por meio da folha de estilo CSS.

É possível incluir qualquer quantidade de elementos à sua folha de estilo CSS para estilizar os itens TEI desejados, de forma que você possa exibir qualquer aspecto dos metadados contidos no documento TEI do jeito que você considerar apropriado.

Agora que você viu como usar XSLT e CSS para renderizar os seus documentos XML, você está pronto para publicar.

Publicando documentos XML

Neste ponto, já que você instalou e configurou os módulos necessários no Drupal, criou um novo tipo de conteúdo TEI XML Document, configurou o TEI XML como um tipo de entrada e configurou um esquema e uma folha de estilo dentro do módulo XML Content, você está pronto para publicar.

Agora, quando um documento XML com codificação rica é incluído no campo de corpo do documento (como mostra a Figura 17) e o documento é publicado (como mostra a Figura 18), os dados e metadados marcados no documento XML são efetivamente renderizados.

Figura 17. Inclua um documento XML no campo de corpo do documento XML
Inclua um documento XML no campo de corpo do documento XML

A Figura 18 mostra o documento publicado.

Figura 18. Imagem do texto renderizado e legível para seres humanos publicado no Drupal
Imagem do texto renderizado e legível para seres humanos publicado no Drupal

Já que criamos e configuramos o esquema e a folha de estilo a serem usados com os documentos XML publicados no nosso site, definimos os elementos XML e atributos aceitos pelo site. Quando um documento XML é enviado, ele é validado automaticamente em relação à boa formação e conformidade com o esquema. E quando um documento é enviado, validado e aceito para publicação, a nossa folha de estilo prescreve o formato de exibição.

A customização do Drupal também oferece níveis cruciais de flexibilidade e granularidade para determinar quais tipos de nó do Drupal devem ser escritos em TEI XML e quais usuários do site podem (e não podem) realizar entradas em XML.


Resumo

Este tutorial mostrou como customizar uma instalação do Drupal para suportar a publicação de documentos XML TEI (e outros). Agora você já deve estar preparado para instalar o Drupal, configurar os módulos XML Content e CCK e criar tipos de conteúdo que suportam e validam entradas XML.

Recursos

Aprender

  • Explorando o Drupal V6 Martin Streicher, developerWorks, agosto/setembro de 2009: veja uma introdução ao Drupal nesta série de artigos com três partes.
  • Folhas de estilo XSL para TEI XML: explore esse conjunto de especificações do XSLT 2.0 para converter documentos TEI XML para XHTML, LaTeX, XSL Formatting Objects, de/para OOXML (docx), de/para OpenOffice (odt) e para o formato ePub.
  • Drupal.org: obtenha documentação, módulos de complementos e outros recursos e comunique-se com a comunidade do Drupal.
  • Text Encoding Initiative (TEI): saiba sobre o consórcio TEI, que desenvolve e mantém coletivamente um padrão para a representação de textos em forma digital.
  • Diretrizes para codificação e troca de textos eletrônicos: obtenha as informações mais recentes sobre o padrão de margem de lucro do TEI.
  • Display XML with Cascading Stylesheets, Part 1: Using stylesheets to display XML (Uche Ogbuji, developerWorks, novembro de 2004): nesse tutorial, explore técnicas básicas de uso de CSS para apresentar XML em navegadores da Web.
  • Understanding RELAX NG (Nicholas Chase, developerWorks, dezembro de 2003): explore os conceitos por trás do RELAX NG nas formas XML e compacta neste tutorial. O RELAX NG usa sintaxe XML e permite que os desenvolvedores criem a maioria das regras da linguagem esquema XML do W3C, mas com uma sintaxe muito simplificada.
  • XML Matters: Kicking back with RELAX NG (David Mertz, developerWorks, de fevereiro a meio de 2003): revise essa série de três partes sobre esquemas do RELAX NG, incluindo a sintaxe compacta e XML.
  • XML Matters: TEI - the Text Encoding Initiative (David Mertz, developerWorks, setembro de 2003): examine o Text Encoding Initiative, um esquema XML dedicado à marcação de textos literários e linguísticos. O TEI permite abstrações úteis de recursos tipográficos os documentos de origem, mas o faz de uma forma que possibilita procurar, indexar, comparar e imprimir a publicação efetivamente— algo que não é possível em publicações arquivadas como simples imagens fotográficas.
  • Área de XML do developerWorks: Obtenha os recursos necessários para melhorar suas qualificações na esfera de XML.
  • My developerWorks: Personalize sua experiência no developerWorks.
  • Certificação XML da IBM: Descubra como se tornar um Desenvolvedor Certificado pela IBM em XML e tecnologias relacionadas.
  • Biblioteca técnica de XML: Consulte a zona de XML para obter uma ampla gama de artigos técnicos e dicas, tutoriais, padrões e Redbooks da IBM. Leia também mais dicas de XML.
  • eventos técnicos e webcasts do developerWorks: Mantenha-se atualizado em relação à tecnologia nessas sessões.
  • DeveloperWorks no Twitter: Inscreva-se hoje para seguir os tweets do developerWorks.
  • Podcasts do developerWorks: Ouça entrevistas e discussões interessantes para desenvolvedores de software.
  • Demos on demand no developerWorks: Acompanhe demos que abrangem desde a instalação de produto e configuração para iniciantes até funcionalidade avançada para desenvolvedores experientes.

Obter produtos e tecnologias

  • Drupal: faça o download dos arquivos principais do Drupal e estenda o seu site com módulos, temas, conversões e perfis de instalação. Este tutorial usa o Drupal versão 6.
  • Módulo Drupal XML Content: salve o XML dentro do corpo de qualquer tipo de nó e faça com que seja exibido de forma diferente com XSL ou quando é validado com relação a um esquema pré-configurado.
  • O Drupal Content Construction Kit: inclua campos customizados em nós usando um navegador da Web.
  • TEI Roma: experimente uma ferramenta baseada na Web para gerar esquemas XML customizados.
  • Repositório SourceForge do TEI: faça o download das folhas de estilo do TEI.
  • O Stylebear: criador de folhas de estilo XSL: faça experiências com uma interface da Web que cria uma implementação customizada das folhas de estilo de TEI do Consórcio.
  • RELAX NG: obtenha uma linguagem de esquema para XML.
  • FileZilla: obtenha um software livre que é um programa cliente de FTP.
  • Servidor da Web Apache: obtenha o servidor HTTP de software livre que fornece serviços de HTTP observando as normas atuais de HTTP e funciona em sistemas operacionais modernos, como UNIX, Microsoft Windows, Mac OS/X e Netware.
  • MySQL: experimente um software livre que é um banco de dados bastante conhecido.
  • DB2 Express-C: obtenha uma versão grátis do servidor de banco de dados IBM DB2, uma base excelente para o desenvolvimento de aplicativos para empresas de pequeno e médio porte.
  • Versões de avaliação de produtos IBM : Faça o download ou explore as versões de teste on-line no IBM SOA Sandbox e entre em contato com as ferramentas de desenvolvimento de aplicativos e produtos de middleware do DB2®, Lotus®, Rational®, Tivoli®e WebSphere®.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Segmentos de mercado, Software livre
ArticleID=646929
ArticleTitle=Desenvolvendo Publicações do Drupal para Suportar XML Baseado em Normas
publish-date=04122011