O ASP.NET e o XHTML

O ASP.NET permite a você criar páginas da Web em conformidade com os padrões XHTML.O XHTML é World Wide Web um Consortium (W3C) que define o HTML como um documento XML padrão.Criar páginas da Web que são conformes com os padrões XHTML apresentam diversas vantagens:

  • Garante que os elementos nas páginas sejam bem formados.

  • Porque muitos navegadores estão incrementado o suporte ao XHTML, criando páginas que atendem aos padrões XHTML ajuda a garantir que suas páginas tenham um processamento consistente em todos os navegadores.

  • Usando o XHTML ajuda a tornar páginas conformes aos padrões de acessibilidade mais rapidamente.

  • O XHTML é extensível, permitindo a definição de novos elementos.

  • Uma página XHTML é mais fácil para ler programaticamente em situações em que a página da Web é processada por um computador em vez de ser lida por usuários, e o documento pode ser manipulado usando transformações.

O W3C identificou vários níveis de conformidade Extensible HTML: Extensible HTML 1.0 Transitional, Extensible HTML 1.0 Frameset, Extensible HTML 1.0 Strict e Extensible HTML 1.1.Transitional, XHTML   1.0 FRAMESET, XHTML   1.0 Strict, e XHTML   1.1 O XHTML   1.1 especifica estritamente esses níveis.O XHTML   1.0 especifica o Frameset e o Transitional definindo a marcação HTML com base no XML, mas permite que determinadas construções sejam amplamente usadas.Muitas páginas da Web podem ser feitas em conformidade com o XHTML   Frameset 1.0 ou com as especificações Transitional, mas não pode atender XHTML   em Strict 1.0 ou XHTML   1.1. especifica sem revisão substancial para substituir a funcionalidade implementada usando construções que não são permitidas nas especificações.

Para obter mais informações sobre o padrão Extensible HTML, consulte a especificação Second edição of Extensible HTML 1.0 no Site da Web do W3C.

Recursos ASP.NET em conformidade com o XHTML

O XHTML define os elementos e atributos mais estritamente que o HTML.Por padrão, todas as marcações que são geradas pelo ASP.NET e pelos controles Web do servidor incluídos no ASP.NET, agora estão de acordo com o padrão XHTML   Transitional 1.0.Em muitos casos, a marcação produzida pela ASP.NET está de acordo com os padrões XHTML   1.1.Salvo a indicação caso contrário, as referências ao padrão XHTML neste tópico significa o XHTML   1.0 e o XHTML   1.1.

Algumas das regras XHTML que diferem do HTML incluem o seguinte:

  • Todos os elementos incluem uma marca de fechamento explícita ou de fechamento automático (com />).

  • Nomes de marca e atributo são processados em letras minúsculas, e valores de atributos são incluídas em aspas duplas.Por exemplo, se você usar um controle GridView na sua página quando a página é processada, o controle GridView emite HTML que está em conformidade com padrões XHTML.Todos os elementos gerados usando abertura explícita e marcas de fechamento (ou marcas de fechamento automático), e os valores de atributos são incluídos entre aspas duplas.

  • As informações de formatação são processadas usando folha de estilo em cascata somente.Para suportar esse padrão, se a página incluir um Extensible HTML DOCTYPE elemento, controles ASP.NET não iram processar font elementos ou atributos, sistema autônomo bgcolor, que não atenderiam aos padrões Extensible HTML.

  • No ASP.NET, se os controles geram IDs, como ocorre na caixa Repeater, GridView, e outros controles, o formato das identificações correspondem a diretrizes XHTML 1.0 Transitional.

  • O ASP.NET dinamicamente adiciona um action atributo para o form elemento. Por padrão, form os elementos incluem uma name atributo, que é permitido no Extensible HTML 1.0 Transitional. Isso ajuda a manter a compatibilidade com aplicativos existentes que dependem de script de cliente que tratam form elementos usando o nome do formulário.

    Observação:

    The name atributo na form elemento não é permitido nas diretrizes Extensible HTML 1.1. Você pode configurar seu aplicativo para não processar um name atributo. Para obter detalhes, consulte " Controlando o processamento XHTML no ASP.NET de páginas e controles " posteriormente neste tópico.

  • Como XHTML requer todos os elementos sejam colocados entre um elemento de recipiente, controles ASP.NET, como elementos input, são processados em elementos div.Isso inclui a marcação HTML processada para controles, como os controles TextBox, CheckBox e RadioButton.Ele também inclui campos ocultos, como o elemento que é usado para armazenar dados no estado de modo de exibição .

  • ASP.NET codifica caracteres, sistema autônomo & (por exemplo, sistema autônomo &). Isso inclui orlas que são geradas para fazer referência ao ECMAScript e o conteúdo com valores codificados, como no estado da exibição.

  • Quaisquer elementos script que são processados na página usam o atributo type apropriado (por exemplo, type="type/javascript") e não incluem um atributo language.Esse item refere-se a scripts que são criados por página ou controles que exigem script de cliente para executar um postback — como HyperLink,LinkButton,Calendar e TreeView controles, assim como o validador controles — e por RegisterHiddenField,RegisterStartupScript e RegisterClientScriptBlock métodos.Os blocos de script que você criou não são automaticamente adicionados com um type atributo.

  • Se ASP.NET processa blocos de script, o conteúdo dos blocos de script é processado dentro um comentário XML (HTML).

Controlando o Processamento de páginas e controles ASP.NET

Em algumas circunstâncias, você pode querer que os controles ASP.NET processem a marcação num formato estrito especificado pelo XHTML   1.1.O processamento padrão inclui algumas marcações que não estão de acordo com a especificação XHTML   1.1.Por exemplo, no Extensible HTML 1.1 os padrões proíbem o uso de um name atributo em uma marca HTML form elemento.

Também, você pode querer que o ASP.NET processe o que não está de acordo com as especificações XHTML 1.0 Transitional.Isso ocorre geralmente quando você tem páginas existentes que dependam de marcas ou atributos que suportam versões anteriores do ASP.NET, mas não estão de acordo com padrões XHTML.

Você pode configurar o seu site da Web para processar marcação(markup) de três maneiras:

  • Legacy (que é semelhante como a marcação era processada em versões anteriores do ASP.NET)

  • Transitional (XHTML 1.0 Transitional)

  • Strict (XHTML 1.0 Strict)

Para obter mais informações, consulte Como: Configurar renderização de Extensible HTML em sites da Web do ASP.NET.

Observação:

A opção para processar marcação legado é fornecida principalmente para ajudá-lo na migração de páginas existentes para a versão atual do ASP.NET, e talvez não tenham suporte em versões futuras do ASP.NET.

Processamento dos legados

Quando o renderização é conjunto para legados, páginas e controles ASP.NET alteram seus renderizaçãos ao comportamento de versões anteriores do ASP.NET.As alterações incluem o seguinte:

  • O elemento form é processado com um atributo name.

  • ASP.NET não processa automaticamente um div elemento dentro do form elemento sistema autônomo um contêiner para controles.

  • sistema autônomo controles de validação são reproduzidos sistema autônomo span atributos de elementos com personalizado, sistema autônomo controltovalidate.

  • The img elemento não processar alt e src atributos, a menos que você o inclua explicitamente.

  • Se for necessário dar suporte ao comportamento postback automático, controles processarão um atributo language (por exemplo, language="javascript").

  • O atributo nowrap é incluído para controles que processem um elemento div (como o controle Panel) se a propriedade Wrap do controle for definida como false.

  • Controles ImageButton processam um atributo border.

  • Todos os elementos br processados na página são processados como <br>.However, if you explicitly include a <br /> tag, the page renders it as-is.

  • Os controles DataGrid e Calendar incluem um atributo bordercolor nos elementos table processados se sua propriedade BackColor estiver definida.

Especificando o Elemento DOCTYPE e NAMESPACE XHTML

sistema autônomo páginas da Web Extensible HTML válidas devem conter um DOCTYPE declaração que identifica a página sistema autônomo uma página Extensible HTML e referências o esquema Extensible HTML ao qual está de acordo. A página também deve incluir atributos na marca HTML que referenciam o namespace XHTML.ASP.NET não cria automaticamente um DOCTYPE declaração quando a página é processada. Em vez disso, você deve criar o DOCTYPE declaração com as referências do namespace de XML apropriado.

Observação:

Designers visuais, sistema autônomo o Visual Studio, geralmente incluem modelos de página padrão que incluem um DOCTYPE declaração. Se você está usando um designer visual, verifique que ele cria novas páginas com a declaração DOCTYPEque você precisa.

O exemplo de código a seguir mostra um DOCTYPE declaração que você pode adicionar à sua página.

<!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" >

Gerar automaticamente o DOCTYPE declaração, o ASP.NET retém o renderização com maior flexibilidade para navegadores que possuem diferentes níveis de conformidade com os diferentes padrões HTML que podem ser especificados em um DOCTYPE declaração.

Observação:

Se a declaração DOCTYPE for removida, a XHTML conformidade não irá ser atendida.A página não será considerada um página XHTML e não fará referência ao esquema XHTML.

Muitos navegadores também terão alterados seus processamentos baseados na presença ou ausência do DOCTYPE declaração e uma declaração de namespace de XML. Se esses elementos estiverem presentes, os navegadores normalmente usam um processamento baseado em padrões.Quando os elementos estiverem ausentes, muitos navegadores processam usando regras específicas que variam de entre tipos às vezes (que é chamado e como processamento em &quot; modo queres &quot;), e portanto pode resultar em processamento imprevisível.

Da mesma forma, você pode controlar o tipo MIME da página.Por padrão, uma página define o tipo de MIME para text/html.However, you can override the page's MIME type by setting the ContentType attribute in the @ Page directive, as shown in the following code example.

<%@ Page Language="VB" ContentType="application/xhtml+xml" %>
<%@ Page Language="C#" ContentType="application/xhtml+xml" %>

Exemplo da página ASP.NET com elementos XHTML requeridos

O exemplo de código a seguir mostra simples uma página ASP.NET em conformidade com o XHTML.

<%@ Page Language="VB" AutoEventWireup="false" %>

<!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">

<script >
Sub Button1_Click(sender As Object, e As EventArgs)
    Label1.Text = "Built at " & DateTime.Now.ToString()
End Sub

Sub listFruit_SelectedIndexChanged(sender As Object, e As EventArgs)
    Label1.Text = "You selected " & listFruit.SelectedItem.Text
End Sub
</script>

<head >
  <title>ASP.NET XHTML Page</title>
</head>

<body>
  <form id="Form1" >
    <div>
      <h1>ASP.NET Sample Page for XHTML</h1>
      <p>
      <asp:listbox  id="listFruit" AutoPostBack="true" 
          onselectedindexchanged="listFruit_SelectedIndexChanged">
         <asp:listitem>Apple</asp:listitem>
         <asp:listitem>Banana</asp:listitem>
         <asp:listitem>Orange</asp:listitem>
      </asp:listbox>
      </p>
      <asp:label  id="Label1" ForeColor="white" 
          BackColor="black" />
      <br />
      <asp:button  id="Button1" onclick="Button1_Click" 
          Text="Click me"/>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
void Button1_Click(Object sender, EventArgs e)
{
    Label1.Text = "Built at " + DateTime.Now.ToString();
}
void listFruit_SelectedIndexChanged(Object sender, EventArgs e)
{
    Label1.Text = "You selected " + listFruit.SelectedItem.Text;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
  <title>ASP.NET XHTML Page</title>
</head>
<body>
  <form id="Form1" >
    <div>
      <h1>ASP.NET Sample Page for XHTML</h1>
      <p>
      <asp:listbox  id="listFruit" AutoPostBack="true" 
          onselectedindexchanged="listFruit_SelectedIndexChanged">
         <asp:listitem>Apple</asp:listitem>
         <asp:listitem>Banana</asp:listitem>
         <asp:listitem>Orange</asp:listitem>
      </asp:listbox>
      </p>
      <asp:label  id="Label1" ForeColor="white" 
          BackColor="black" />
      <br />
      <asp:button  id="Button1" onclick="Button1_Click" 
          Text="Click me"/>
    </div>
  </form>
</body>
</html>

Observe o seguinte:

  • The form elemento não contém um action atributo porque o action atributo é adicionado quando a página é processada.

  • As propriedades de formatação do controle Label serão processadas como atributos style.

  • Porque o script elemento contendo um script de servidor não é processado no navegador, ele não requer um type atributo.

  • A página processa script de cliente em tempo de execução para ativar o comportamento de postback automático do controle ListBox, mas a página processa o script de uma maneira XHTML compatível.

XHTML em conformidade com textos estáticos e elementos HTML

O ASP.NET não altera texto estático ou elementos HTML do servidor que você coloca em uma página.Por exemplo, um página da Web o ASP.NET pode incluir controles TextBox e Button, bem como texto estático que você adiciona dentro das marcas <p></p>.O ASP.NET pode processar XHTML para o controles TextBox e Button, mas ele não pode corrigir erros de XHTML que ocorrem entre as marcas <p></p>.Se você criar um texto estático ou elementos HTML, certifique-se que eles estão em conformidade com o XHTML.Você pode verificar suas páginas, validando-as, conforme explicado na próxima seção.

Atributos desconhecidos de controles HTML são passados adiante para o controle processado de saída e não serão validados como marcação XHTML válida.Por exemplo, especificar o atributo ID para o controle HtmlHead resultará na marcação que não é XHTML 1.0 estritamente compatível.Para validar sua marcação, use um validador de marcação, sistema autônomo a Serviço de validação de marcação da World Wide Web Consortium (W3C).

Verificando a conformidade do XHTML em páginas da Web ASP.NET

Depois de criar sua páginas da Web ASP.NET, convém verificar se elas processaram corretamente o XHTML.Se a página contiver controles do servidor da Web do ASP.NET, não existe nenhuma maneira de verificar a página no momento da escrita, porque os controles só processaram o XHTML quando a página for executada.

Observação:

Alguns designers visuais, como o Visual Studio, podem fornecer em tempo de design a validação das marcas XHTML na página.

Para verificar a validade do XHTML para suas páginas, use um serviço que executa a página e verifica sua saída.Uma estratégia típica é distribuir suas páginas para um servidor disponível publicamente.O servidor pode ser um servidor de teste; não é necessário ser um servidor de produção.No entanto, ele deve ser aberto para a Internet.Você pode usar um serviço de validação que possa ler suas páginas programaticamente.

Um serviço popular é o serviço de validação de marcação W3C que é mantido pelo World Wide Web Consortium.Para usar este validador, digite a URL da página que você deseja que o serviço verifique.O site de validação solicita a página e produz um relatório dos erros que encontrar.Como alternativa, você pode salvar a fonte para uma página da Web e enviá-la como um arquivo para o serviço de validação.Para obter mais informações sobre esse serviço de validação, consulte o Site da Web do W3C.

Se a página que você estiver verificando possui conteúdo dinâmico, ou se os usuários podem personalizar as páginas da Web do seu site, você deve certificar-se de testar as páginas com um conteúdo diferente para ter certeza que todos os conteúdos possíveis na página são válidos.Em alguns casos, isso pode ser difícil porque as possíveis variações na saída da página são muito grandes para se poder para testar efetivamente.

Configurando os recursos do navegador para a validação da marcação

Quando uma página é processada, o ASP.NET examina a informação na solicitação sobre o navegador atual, e com base no tipo de navegador (sequência do agente do usuário), processa a marcação que seja apropriada para esse navegador.Para obter mais informações, consulte Controles de Servidor Web do ASP.NET e Recursos do Navegador.

Se você submeter uma página da Web do ASP.NET para um serviço validação como o W3C Markup Validation Service, o ASP.NET pode processar uma versão da página que não está de acordo com padrões XHTML.Isso ocorre porque o serviço de validação não relata a si próprio como um tipo de navegador que ASP.NET reconhece, como o Internet Explorer ou Mozilla.Quando o ASP.NET não reconhece o tipo do navegador, por padrão será processado com marcações de nível inferior, que não incluem elementos e atributos em conformidade com o XHTML, ou recursos, como estilos folha de estilos em cascata.

Você pode configurar seu aplicativo para enviar a correta marcação em conformidade com o XHTML para o serviço de validação, criando uma definição para a sequência do agente do usuário para o navegador para o serviço de validação.Por exemplo, o serviço validação de marcação W3C relata um agente de usuário que começa com &quot; W3C_Validator &quot;.Para criar uma definição de navegador para o validador W3C, você pode criar um arquivo .browser na pasta seu App_Browsers (você pode nomear o arquivo .browsers da forma que desejar) e, em seguida, adicione o seguinte browsers elemento.

<browsers>
  <browser id="W3C_Validator" parentID="default">
    <identification>
        <userAgent match="^W3C_Validator" />
    </identification>
    <capabilities>
      <capability name="browser"              value="W3C Validator" />
      <capability name="ecmaScriptVersion"    value="1.2" />
      <capability name="javascript"           value="true" />
      <capability name="supportsCss"          value="true" />
      <capability name="tables"               value="true" />
      <capability name="tagWriter" 
         value="System.Web.UI.HtmlTextWriter" />
      <capability name="w3cdomversion"        value="1.0" />
    </capabilities>
  </browser>
</browsers>

Para obter mais informações sobre como criar definições do navegador, consulte Navegador Definition Arquivo Esquema (navegadores elemento).

Exceções à Conformidade XHTML

Embora o ASP.NET gere marcação em conformidade com o XHTML, alguns controles oferece funcionalidade adicional de suporte, que se usado, pode resultar numa marcação não compatível.

Observação:

Cada controle apresenta sua própria marcação.Controles personalizados criados por terceiros talvez não foram escritos para produzir uma saída em conformidade com o XHTML.Se você estiver usando um controle personalizado, verifique com o fornecedor do controle para determinar qual padrões o controle oferece suporte.

Atributo destino

Exemplos de controles que podem resultar na marcação não compatível são controles que permitem que você inclua um target atributo para especificar o comportamento do lado do cliente:

Páginas que incluam os controles com seus target conjunto de atributos não iram validar contra Extensible HTML 1.1. Se for essencial para você a criar páginas que são 100 % conformes com sistema autônomo padrões Extensible HTML 1.1, você deve evitar usar sistema autônomo opções, sistema autônomo a target atributo, que resultam na marcação não conforme.

Selecione elemento

Um controle DropDownList ou ListBox pode ser usado para criar uma seleção de único item ou de vários itens.DropDownList e ListBox controlam cada processamento de um elemento HTML select.Se o controle DropDownList ou o ListBox não contém pelo menos um controle ListItem, então os elementos processados select não contém elementos filho option e não validará conforme XHTML 1.1.

Consulte também

Tarefas

Como: Configurar renderização de Extensible HTML em sites da Web do ASP.NET