Seção 3: Autores

Q 3.5: Como posso fazer meus arquivos HTML existentes funcionarem em XML?

Faça com que sejam XHTML/HTML5, ou use um tipo diferente de documento.

Converta-os para que se adaptem a um novo tipo de documento (com ou sem um DTD ou Schema) e escreva uma planilha que trabalhe junto com eles; ou os edite para que se adaptem a XHTML ou HTML5.

Você talvez precise converter arquivos HTML existentes porque XML não permite a minimização de end-tag (que não tenha </p> , etc), valores de atributos sem aspas, e um número de outros atalhos SGML que são comumente usados em HTML. Muitas ferramentas para autoria HTML já produzem quase (mas não totalmente) XML bem formado ao garantir que end-tags sejam usadas, valores de atributos são marcados com citação em aspas, etc - no entanto, muitos não o fazem.

Você talvez seja capaz de converter HTML para XHTML usando o programa de Dave Raggett HTML Tidy Uma versão HTML5 também existe), a qual pode limpar alguns erros horríveis que pseudo-marcações deixadas para trás por editores HTML incompetentes, e até mesmo separar parte da formatação em uma planilha, mas geralmente existe ainda algum tipo de edição manual a ser feita.

A maioria dos programas de design de website modernos, incluindo DreamWeaver, ainda não produzem nada que se compare a HTML bem formado, principalmente porque são direcionados para fazer que páginas fiquem bonitas, ao invés de fazer com que as marcações fiquem certas. Usando o programa de design de website e as suas páginas HTML como o único repositório para sua informação pode ser perigoso e um erro caro. Se você está trabalhando de forma contrária, no entanto, deixando o design de informação certo em XML primeiro, e então exportando para uma página de design produzida usando um programa de design de website, é provavelmente menos importante que o HTML esteja uma bagunça, porque navegadores são bastante perdoáveis.

Convertendo HTML válido em XHTML

Se os seus arquivos HTML são válidos (validação íntegra com um analisador SGML contra uma dos DTDs publicados, não só uma simples checagem na sintaxe), então tentar validá-los como XHTML com um analisador XML. Se você tem criado HTML limpo sem formatação embutida então este processo deveria regurgitar apenas diferenças de elemento em upper/lower case e nomes de atributos, e elementos EMPTY como img , mais qualquer nomes de tipos de elementos não-padronizados se você os utiliza. Simples edição manual ou um roteiro curto pode ser o suficiente para ajustar estas mudanças.

Se o seu HTML validamente utiliza omissão de end-tag e valores de atributos sem citação com aspas, isto pode ser consertado automaticamente por uma normalização de programa como sgmlnorm (do pacote OpenSP que é parte do OpenJade ), ou pela função sgml-normalize em um editor como Emacs / psgml (não se espante com os nomes, ambos aceitam XML).

Se você possui muitos arquivos HTML válidos, você poderia escrever um roteiro para fazer estas aplicações em uma linguagem de programação que entenda marcações SGML (tais como Omnimark , SGMLC , ou uma das linguagens de script populares (eg Perl , Python , Tcl , etc), usando suas bibliotecas SGML/XML; ou você poderia até mesmo utilizar um editor macros se você sabe o que está fazendo.

Se o seu HTML é inválido ou mal formado, tente o programa HTML Tidy mencionado acima. Se isso não o consertar, eu temo que você necessitará escrever algo especial usando o procedimento abaixo, ou fazer tudo manualmente, ou copiar e colar de um navegador.

Convertendo para um novo tipo de documento

Se você deseja mover seus arquivos para fora de HTML para algum outro DTD por completo, existem muitos DTD industriais XML nativos e versões XML modulares de DTDs populares como TEI (documentos literários, históricos e linguísticos) e DocBook (documentação de computador) ou DITA (Documentação técnica) para escolher. Havia vários sites para a troca de novos DTDs XML, mas escrever novos são agora raros.

Você pode, obviamente, criar sua própria marcação: desde que faça sentido e você crie um arquivo bem formado, você pode escrever uma planilha de estilo CSS ou XSLT e exibir seu documento em um navegador.

Convertendo HTML inválido para XHTML bem formado

Se seus arquivos são inválidos HTML (95% da Web) eles podem ser convertidos em arquivos DTDless bem formados da seguinte maneira:

  1. Substituir qualquer declaração DOCTYPE com a declaração XML (Ou usando a codificação de caracteres apropriada).

  2. Se não houvesse nenhuma Declaração DOCTYPE, basta prepend a Declaração XML. De qualquer forma, a Declaração XML, se usada, deve ser a linha 1 do documento.

  3. Mude todos os elementos EMPTY (por exemplo, cada BASE , ISINDEX , LINK , META , NEXTID e RANGE no cabeçalho, e cada AREA , ATOPARA , AUDIOSCOPE , BASEFONT , BR , CHOOSE , COL , FRAME , HR , IMG , KEYGEN , LEFT , LIMITTEXT , OF , OVER , PARAM , RIGHT , SPACER , SPOT , TAB , e WBR no corpo do documento) para que eles terminem com /> em vez disso, por exemplo <img src="mypic.gif" alt="Picture"/> ;

  4. Faça todos os nomes de tipos de elemento e nomes de atributo em letras minúsculas;

  5. Verifique se há tags finais explícitas adequadas para todos os elementos não-VAZIOS; Por exemplo, cada <para> deve ter um </para> , etc;

  6. Escape de todos os caracteres < e & não-marcação (ou seja, texto literal) caracteres como & lt; e & amp; Respectivamente (não deveria ter havido qualquer caractere isolado

  7. Certifique-se de que todos os valores de atributos estejam em alocações correspondentes (os valores com aspas simples incorporadas devem estar entre aspas duplas e vice-versa - se você precisar de ambos, use a referência da entidade do caractere (");

  8. Certifique-se de que todos os URI de script que tenham & como separador de campo sejam alterados para & amp; Ou um ponto-e-vírgula em vez disso.

  9. Certifique-se de que todos os scripts (por exemplo, Javascript) que tenham < ou & caracteres (matemáticos menores que testes, e condicionais Booleanos E condicionais) sejam fornecidos como seções Marcadas CDATA, ou (se os processadores do navegador aceitá-los) modificados para usar & lt; E & amp; Ou um ponto-e-vírgula, respectivamente.

Esteja ciente de que alguns navegadores HTML obsoletos podem não aceitar os elementos EMPTY de estilo XML com a barra diagonal, portanto, as alterações acima podem não ser compatíveis com versões anteriores. Uma alternativa é adicionar uma end-tag falsa a todos os elementos EMPTY, então <img src="foo.gif"/> se torna <img src="foo.gif"></img> . Este XML é válido, mas você deve ser capaz de garantir que ninguém nunca colocará qualquer conteúdo de texto dentro desses elementos. Adicionar um espaço antes da barra de fechamento em elementos EMPTY (por exemplo <img src="foo.gif" /> ) também pode enganar navegadores mais antigos para aceitar XHTML como HTML.

Se você tiver que responder Sim a qualquer uma das perguntas na Lista para HTML inválido abaixo, você pode economizar muito sofrimento corrigindo esses problemas primeiro antes de fazer qualquer outra coisa. Você provavelmente estará muito perto de ter arquivos bem formados.

A marcação que é sintaticamente correta mas semanticamente sem sentido ou vazia deve ser editada antes da conversão. Exemplos são dispositivos de espaçamento falso, como parágrafos vazios repetidos ou quebras de linha, tabelas vazias, GIFs de espaçamento invisível, etc. O XML usa planilhas de estilo e o CSS3 indica que você não precisará de nenhum desses.

Infelizmente, há muito trabalho a fazer se seus arquivos forem inválidos: é por isso que muitos Webmasters agora insistem que somente os arquivos válidos ou bem-formados sejam usados ​​(e por que você deve instruir seus designers a fazer o mesmo), a fim de evitar a manutenção manual desnecessária e os custos de conversão mais tarde.

Lista de verificação para HTML inválido

Se seus arquivos HTML se enquadram nessa categoria (o HTML criado pela maioria dos editores WYSIWYG geralmente é inválido), eles quase certamente terão de ser convertidos manualmente, embora, se as deformidades forem regulares e cuidadosamente construídas, os arquivos podem estar quase bem formados, e você poderia escrever um programa ou script para fazer como descrito acima. As estranhezas que você precisa verificar devem incluir:

  • Os arquivos possuem erros de sintaxe de marcação? Por exemplo, existem alguns ângulos, barras invertidas, em vez de barras nas extremidades, ou elementos que aninham incorretamente (por exemplo <B>inciando <I>dentro de um elemento</B> mas terminando fora</I> it )?

  • Existem elementos com end-tags que não podem ser inferidas, por (exemplo) sgmlnorm ?

  • Existem URIs (por exemplo, em href ou src s) que usam barras invertidas estilo Microsoft Windows em vez de barras normais?

  • Os arquivos contêm marcação que entra em conflito com DTDs HTML, como cabeçalhos ou listas dentro de parágrafos, itens de lista fora dos ambientes de lista, elementos de cabeçalho como base anterior ao primeiro html , etc.? (Outro truque do editor)

  • Os arquivos usam elementos imaginários que não estão em qualquer DTD HTML conhecida? (Grandes quantidades destes são usados ​​em sistemas de marcação proprietários mascarados como HTML). Embora isso seja fácil de se transformar em um arquivo DTDless bem formado (porque você não precisa definir os elementos com antecedência), a maioria das extensões proprietárias ou específicas do navegador nunca foram formalmente definidas, portanto, muitas vezes é impossível descobrir de forma significativa onde o Tipos de elementos podem ser usados

  • Existem caracteres inválidos (não XML) em seus arquivos? Procure especialmente por Apple Mac Roman-8 nativo com caracteres deixados por designers descuidados; Qualquer um dos caracteres ilegais do Windows (os 32 caracteres nos códigos decimais 128-159 inclusive) inseridos pelos editores da Microsoft; E qualquer um dos caracteres de controle 0–31 (exceto aqueles permitidos como TAB, CR e LF). Estes devem ser convertidos para os caracteres corretos em UTF-8 (ou o que você estiver usando).

  • Os seus arquivos contêm comentários inválidos (antigo Mosaic / Netscape)? Comentários devem parecer assim

        <!-- como este -->

    Com dois traços em cada extremidade e nenhum outro traço duplo (especialmente não múltiplos) no meio.