<a class="mwx.link.article" href="../../../1/7/_/17_de_Setembro.a9bead.xml">17 de Setembro</a><a class="mwx.link.article" href="pt/1/7/_/17_de_Setembro.a9bead.xml">17 de Setembro</a><a class="mwx.link.article"href="../../../m/_/_/Médico.9e4a55.xml">médico</a> (mas, na coleção v4.0, o documento chama-se Médico.7082fd.xml)<a class="mwx.link.article" href="pt/m/é/d/Médico.7082fd.xml">médico</a> (e, na coleção v4.1, o documento tem o mesmo nome)
A versão v4.1 é a versão oficial usada no Págico.
A colecção do Págico é construída com base na versão oficial da Wikipédia Portuguesa de 25 de Abril de 2011 (disponível oficialmente a partir de dumps.wikipédia.org.
O processamento foi feito com base no ficheiro pages-articles.xml.bz2 que inclui, num único documento XML, todas as páginas da Wikipédia.
Para fazer a geração da versão XHTML de cada artigo com base na sua definição XML (juntamente com todas as anotações na sintaxe da Wikipédia), foi usada uma biblioteca Python denominada mwlib.
As ferramentas da mwlib podem usar o sítio da wikipédia oficial, uma cópia local, ou uma versão pré-processada do ficheiro XML acima referido. Optamos por usar esta última abordagem por poupar largura de banda, e não necessitar de instalar um servidor e configurar uma versão da wikipédia local.
Infelizmente estas ferramentas foram pensadas para a língua inglesa e foi necessário fazer alterações ao seu código para que as ligações inter-wikipédia se mantivessem na língua portuguesa. Brevemente serão disponibilizadas estas alterações na forma de um ficheiro diff sobre a instalação das mwlib.
Instaladas e alteradas as mwlib, a versão pré-processada é criada com o comando:
mw-buildcdb -i dump.xml -o cdb
e o resultado é uma pasta, de nome cdb que inclui o documento
XML pré-processado, e alguns ficheiros de configuração. É importante
verificar que o conteúdo do ficheiro wikiconf.txt é:
[wiki]
type = nucdb
path = /caminho/para/o/pagico/cdb
lang = en
Ter em atenção que a língua indicada neste ficheiro deve ser a
inglesa, caso contrário as ferramentas de conversão falharão o
processamento de várias páginas (a razão para esses problemas
ainda não foi completamente entendida).
Posteriormente, são percorridas todas as páginas no ficheiro XML. Para isso é usado o módulo Perl MediaWiki::DumpFile. Para cada página é feita uma substituição de carácteres que habitualmente são problemáticos na gestão de ficheiros, nomeadamente o espaço e :!?'(\/)[]{}&. Todos estes carácteres são substituídos por um sublinhado. Para além disto, e para conseguir ter ficheiros com nomes iguais apenas mudando de maiúsculas para minúsculas, foi adicionado um código hexadecimal no final do ficheiro (primeiros seis carácteres do MD5 do nome do ficheiro depois de feitas as substituições).
Se a página em causa for de redirecção (ou seja, um apontador para outra página) o ficheiro XHTML não é gerado. Caso contrário, é invocado o comando mw-render com o nome da página a ser processada. Os ficheiros XHTML resultantes são pós-processados com o xmllint de modo a garantir que certas etiquetas são desdobradas (<title/> é transformada em <title></title>) para que os navegadores as interpretem correctamente.
Foram detectados dois tipos de direcção. Um dos tipos é resolvido automaticamente. Por exemplo, http://pt.wikipedia.org/wiki/Escravo, embora mantenha o URL, redirecciona para http://pt.wikipedia.org/wiki/Escravidão. Outro tipo, como http://pt.wikipedia.org/wiki/Ateismo, tem uma página própria de redirecção que sugere http://pt.wikipedia.org/wiki/Ateísmo.
Em todas as colecções disponibilizadas, o segundo tipo de redirecção nunca é resolvido (é apresentada a página da redirecção).
O primeiro tipo de redirecção é resolvido na v1.0. Na v2.0 não foram geradas. Na v3.0 e seguintes, as páginas de redirecção contêm apenas a ligação para a página de destino.
A Wikipédia usa um sistema de template, macro, ou pré-definição, que permite que determinadas páginas (criadas originalmente num espaço de nomes — namespace — Template, e recentemente adaptado na versão portuguesa para Predefinição) possam ser utilizadas como funções ou texto pré-definido para ser incluído.
Os detalhes desta linguagem de macros razoavelmente poderosa pode ser consultada na página da Wikipédia sobre este assunto. Infelizmente nem todas as pré-definições podem ser expandidas antes de processar o XML da Wikipédia, já que o tornaria XML inválido. Isto levou a que nas versões que têm as pré-definições expandidas se tenha expandido apenas as pré-definições que não incluam os caracteres < e >, de modo a não invalidar o documento. Também só foi feita a expansão de pré-definições de primeiro nível.
separa.pl - Dado que a maior parte das máquinas actuais são multi-processador não faz sentido processar a wikipédia usando um único processo. Neste sentido, este pequeno script processa o documento XML da wikipédia e produz um conjunto de pequenos documentos XML que podem ser processados em paralelo.
separa.pl -n=6 dump.xml
Esta linha gera 6 ficheiros XML (01.xml, 02.xml, ...). Se o valor n não for especificado o valor 4 é usado.
process.pl v2 - Processa um documento XML (seja ele o original ou um dos divididos pela ferramenta separa.pl) e gera um ficheiro por página da wikipédia, numa pasta pt, ordenada numa árvore de títulos de três níveis (tal como a colecção disponibilizada). Também é criado um documento com informação sobre as redirecções (ver secção acima com discussão sobre este assunto).
process.pl 01.xml
gera_zips v2 - Esta pequena script cria uma lista da árvore de ficheiros na pasta pt e divide-a em 100 pequenas listas. Para cada lista é criado um zip de nome pt00.zip. Além disso, é criado um pt-all.zip com todos os documentos da árvore, e um ptidx.zip que contem um ficheiro lst coma lista de ficheiros de cada zip, e um documento redirects.lst com informação sobre os redireccionamentos.
comment-css.pl - Percorre a árvora de ficheiros da colecção e comenta as inclusões das CSS externas.
make-self-contained.pl v2 - Percorre a árvore de ficheiros da colecção e substitui todas as ligações para documentos da Wikipédia para se tornarem locais.
generate-templates-cache.pl - Processa o documento XML da Wikipédia e cria uma base de dados com as pré-definições, para ser usada pela ferramenta subst-templates.pl.
subst-templates.pl - Dada a base de dados criada pelo generate-templates-cache.pl expande as definições (seguindo algumas heurísticas para não danificar o documento XML) no documento XML com a Wikipedia.