SHTML, também chamado de HTML com Server Side Include (SSI) é uma linguagem de marcação de hipertexto (códigos aplicados a um texto na internet) com suporte script no servidor, ou seja, uma linguagem de programação de websites que executa comandos no servidor Web, onde em seguida o resultado é exibido nos navegadores de internet. SHTML é baseado no servidor NCSA HTTPd. Útil para incluir o conteúdo de vários arquivos diferentes em uma página da Web, usando a diretiva #include, geralmente pode ser um código comum em todo as páginas de um portal, como um cabeçalho de página, rodapé de página e, menu de navegação. O SSI também contém diretivas de controle para recursos condicionais e diretivas para chamar programas externos. É suportado pelo Apache, LiteSpeed, nginx, IIS e, Jigsaw (W3C).

Para que um servidor da Web reconheça um arquivo HTML habilitado para SSI e, portanto, execute essas instruções, o nome do arquivo deve terminar com uma extensão especial: .stm, .shtm, .shtml, ou, se o servidor estiver configurado para definir o bit de execução dos comandos.

Projeto Por ser uma linguagem de programação e de marcação com design simples, o SSI suporta apenas um tipo de variável: o formato texto e, possui um fluxo de controle simples com suporte a comandos de escolha, mas os loops não são suportados, só podem ser feitos por recursão usando include ou redirecionamento HTTP. Sendo de fácil aprendizado e uso, o SSI é Turing-completo, diferente do processamento complicado das linguagens de programação mais ricas em recursos.

O SSI tem uma sintaxe simples: como por exemplo, usar um rodapé repetitivo . Uma página da web que exibe uma cotação diária, pode incluir um arquivo de cotação colocando o seguinte código na página: . Onde qualquer alteração no arquivo quote.txt, será exibido em todas as páginas que o incluem, exibirão a cotação diária mais recente. A inclusão não se limita a arquivos, também pode ser a saída de texto de um programa ou o valor de uma variável do sistema, como a hora atual por exemplo.

As diretivas são colocadas na forma de comentários HTML. Mas se o SSI não estiver habilitado, os usuários não verão os resultados das diretivas SSI na página web.

Diretivas

Comum A seguir estão as diretivas SSI dos tempos do NCSA HTTPd (década de 1990). Algumas implementações não suportam todas. +Diretivas NCSA HTTPd SSI Diretiva Parâmetros Descrição Exemplo include arquivo ou virtual Esta é a diretiva SSI mais usada. Permite que o conteúdo de um documento seja transcluído (adicionado integralmente) em outro. Este também pode ser um arquivo habilitado para SSI. O file ou parâmetros virtual especificam o arquivo (página HTML, arquivo de texto, script, etc.) a ser incluído. O Apache HTTPd suporta include. Se o processo não tiver acesso para ler o arquivo ou executar o script, a inclusão falhará. O parâmetro virtual trata de qualquer caminho de diretório como se fosse parte da URL, enquanto file trata de qualquer caminho de diretório como no sistema de arquivos subjacente. Ao usa-lo é proibido referenciar caminhos absolutos ou ../ para acessar um diretório pai. O Apache recomenda neste caso usar virtual.<nowiki><!--#include virtual="menu.cgi" --> <!--#include file="footer.html" --></nowiki> exec cgi ou cmd Esta diretiva executa um programa, script ou comando shell no servidor. O parâmetro cmd especifica um comando do lado do servidor; o parâmetro cgi especifica o caminho para um script CGI. The PATH_INFO and QUERY_STRING of the current SSI script will be passed to the CGI script, as a result "exec cgi" should be used instead of "include virtual".<nowiki> <!--#exec cgi="/cgi-bin/foo.cgi" --> <!--#exec cmd="ls -l" --></nowiki> echo var Esta diretiva exibe o conteúdo de uma variável de ambiente HTTP especificada. Variables include HTTP_USER_AGENT, LAST_MODIFIED, and HTTP_ACCEPT.<nowiki>Your IP address is: <!--#echo var="REMOTE_ADDR" --></nowiki> config timefmt, sizefmt ou errmsg Esta diretiva configura os formatos de exibição para a data, hora, tamanho do arquivo e mensagem de erro (retornada quando um comando SSI falha).<nowiki><!--#config timefmt="%y %m %d" --> <!--#config sizefmt="bytes" --> <!--#config errmsg="SSI command failed!" --></nowiki> flastmod e fsize arquivo ou virtual Essas diretivas exibem a data em que o documento especificado foi modificado a última vez, ou o tamanho do documento especificado. O parâmetros virtuais especificam o documento a ser usado. O parâmetro file define o documento em relação ao caminho do documento; o parâmetro virtual define o documento em relação à raiz do documento.<nowiki><!--#flastmod virtual="index.html" --> <!--#fsize file="script.pl" --></nowiki>

Diretivas de controle As diretivas de controle são posteriormente adicionadas ao SSI. Eles incluem o onipresente controle de fluxo if-elif-else-endif e escrita de variáveis, bem como recursos mais exóticos, como loops encontrados apenas em algumas implementações. Diretiva Parâmetros Descrição Exemplo Encontrado em exp instrução if usada para testes de condição que podem determinar e gerar várias páginas lógicas a partir de uma única página física. elif é uma abreviação para else-if aninhado. else e endif não aceitam parâmetros. A sintaxe de expressão varia entre as implementações. Verificações de existência de variável e igualdade/regex são comumente suportadas. O Jigsaw usa expressões divididas em vários atributos.<nowiki> <!--#if expr="${Sec_Nav}" --> <!--#include virtual="secondary_nav.txt" --> <!--#elif expr="${Pri_Nav}" --> <!--#include virtual="primary_nav.txt" --> <!--#else --> <!--#include virtual="article.txt" --> <!--#endif --> </nowiki>Onipresente. definir var, valor Define o valor de uma variável SSI. O Apache fornece parâmetros adicionais para codificações .<nowiki><!--#set var="foo" value="bar" --></nowiki> Apache, Nginx printenv Esta diretiva gera uma lista de todas as variáveis SSI e seus valores, incluindo variáveis ambientais e definidas pelo usuário. Não possui atributos.<nowiki><!--#printenv --></nowiki> Apache

Ver também

Exemplos de Máquinas de Turing Linguagem client-side

Referências

Ligações externas Referência do mod_include no Apache, chama diretivas "elementos" (em inglês) Referência do módulo ngx_http_ssi_module no Nginx, chama as diretivas "comandos". Referência do NCSA HTTPd SSI original, chama as diretivas "comandos". Comandos de inclusão do lado do servidor no W3C Jigsaw, chama diretivas "elementos", expandido com servlets, JDBC, cookie HTTP e loops. Tutoriais: Tutorial Apache SSI (em espanhol) Guia simples sobre SSI (em inglês) Desenvolvedor SSI, Apache Server Side Includes

Categoria:Tecnologia web Categoria:Linguagens de script Categoria:HTML semântica Categoria:Linguagens de marcação