1.A versão oficial e original, em inglês, deste documento, encontra-se em: http://www.w3.org/TR/2005/REC-xml-id-20050909/ e os seus direitos são conforme:

2. A única versão normativa deste documento é a versão em língua inglesa que se encontra no sítio do W3C.

3. O presente documento traduzido para a língua portuguesa do Brasil, pode conter erros de tradução.

Este documento foi traduzido em 10 de setembro de 2005 por: Maurício Samy Silva e encontra-se hospedado no seu sítio "CSS para WebDesign" em http://www.maujor.com/
A traduçao para a língua portuguesa do Brasil, foi para este documento. Vale dizer, as páginas remetidas pelos links aqui indicados, estão em sua versão original em língua inglesa.
Por favor, relate erros encontrados neste documento para Maurício Samy Silva

W3C

xml:id Versão 1.0

Recomendação W3C de 9 de Setembro de 2005

Esta versão :
http://www.w3.org/TR/2005/REC-xml-id-20050909/
Última versão :
http://www.w3.org/TR/xml-id/
Versão anterior :
http://www.w3.org/TR/2005/PR-xml-id-20050712/
Editores:
Jonathan Marsh, Microsoft <jmarsh@microsoft.com>
Daniel Veillard, Invited Expert <daniel@veillard.com>
Norman Walsh, Sun Microsystems <Norman.Walsh@Sun.COM>

Ver a listagem de erros deste documento, na qual podem ter sido incluidas algumas correções normativas.

Ver também traduções.

Este documento está disponível também em formato não normatizado: XML.


Sumário

Este documento define o significado do atributo xml:id como um ID em documentos XML bem como o tratamento de tal atributo como identificadores IDs, sem contar com validação, sem apoio de recursos externos e sem se basear em um subconjunto interno.

Status deste documento

Esta seção descreve o status deste documento à época da sua publicação. Outros documentos futuros, poderão sobrescrever este documento. Uma lista das atuais publicações do W3C e a última revisão deste relatório técnico pode ser encontrada em W3C technical reports index no sítio do W3C em http://www.w3.org/TR/.

Este documento é uma Recomendação do W3C. Foi desenvolvido pelo W3C XML Core Working Group que é integrante da XML Activity. Foi revisado pelos membros do W3C e por outras partes interessadas e endossado pelo Diretor. É um documento estável e pode ser usado como fonte e citado como referência normativa por outros documentos. A função do W3C ao produzir uma Recomendação é a de torná-la amplamente conhecida e de promover sua completa implementação. Isto incrementa a funcionalidade e a interoperabilidade da Web.

A versão normativa desta especificação é unicamente a versão inglesa. Traduções deste documento podem estar disponíveis.

Se você quer fazer algum comentário sobre este documento, envie para public-xml-id@w3.org, uma lista de e-mail que possui um arquivo público em public archive. Uma errata para esta edição está disponível em is available.

Este documento define o significado do atributo xml:id como um ID em documentos XML bem como o tratamento de tal atributo como identificadores IDs, sem contar com validação, sem apoio de recursos externos e sem se basear em um subconjunto interno.

Este documento baseia-se na Proposta de Recomendação xml:id Version 1.0 de 12 de julho de 2005. Feedback recebido por ocasião daquela publicação resultou em pequenas alterações. A comprovação da interoperação em pelo menos duas implementações desta especificação estão documentadas em Implementation Report. Uma suite de testes encontra-se em also available.

Este documento foi produzido de acordo com a política de patentes definida em 5 February 2004 W3C Patent Policy. O Grupo de Trabalho mantém uma lista pública para divulgação da política de patentes em public list of patent disclosures e que estão relacionadas ao Núcleo XML, ali estão instruções para divulgação [e exclusão] de patente. Um indivíduo que tenha conhecimento de uma patente em processo de reenvindicação e que esteja relacionada a esta especificação deverá divulgar esta informação de acordo com as diretrizes contidas em section 6 of the W3C Patent Policy.

Tabela de Conteúdos

1 Introdução
2 Terminologia
3 Sintaxe
4 Processando o atributo xml:id
5 Informando à aplicação
6 Erros
7 Conformidade
    7.1 Conformidade com xml:id
    7.2 Conformidade com as definições para XML
8 Extensibilidade

Apêndices

A Referências
B Referências (não normativas)
C Impacto sobre canonização (não normativas)
D Tecnologias de validação (não normativas)
    D.1 Validação com DTD
    D.2 Validação com XML Schema
    D.3 Validação com RELAX NG
E Normalização para valores de atributos em IDs (não normativas)


1 Introdução

[XML 1.0] e [XML 1.1] fornecem mecanismos para rotular elementos com um identificador único. Este mecanismo consiste em declarar o tipo de atributo como um "ID", e assim o parser o validará como tal.

Declarações tanto internas como externas às DTD internal or external DTD subset em um documento XML, podem definir atributos como sendo do tipo ID. Contudo, o processamento de conjuntos de DTD externas é opcional para processadores XML, e algumas especificações, notadamente [SOAP], proibem completamente DTDs, não garantindo assim que todos os destinatários dos documentos XML possam reconhecer tais identificadores.

Identificadores podem também ser declarados via mecanismos externos. Particularmente o [XML Schemas] prevê um tipo de "xs:ID" com as mesmas características de unicidade e validade que as determinações para XML. Contudo não há garantias de que os consumidores estejam com disponibilidade do schema "correto" nem de que ocorrerá o processamento se o schema estiver disponível.

A existência de um mecanismo permitindo um elemento identificador único, para ser reconhecido por todos os processadores em conformidade com a XML XML processors, quer eles validem ou não, é desejável ao se desenvolver um XML. A presente especificação permite que os autores identifiquem elementos com IDs que podem ser reconhecidos por todo processador sem consideração de como, ou de se, alguma declaração interna ou externa está disponível.

Um problema adicional ocorre com XML baseado em DTD ou baseado em Schema pois, os identificadores são reconhecidos conceitualmente de modos diferentes - como attribute type de um conjunto de propriedades informativas no primeiro caso, e como propriedade das famílias de type definition no segundo. É desejável que se tenha uma uniformidade nos mecanismos de reconhecimento de identificadores.

Esta especificação fornece tal mecanismo: descreve a semântica do atributo xml:id. Esta especificação foi projetada para ser uma camada separada no processamento e compatível com as tecnologias de validação existentes. Aos envolvidos com implementações, incentivamos a dar suporte para o processamento de xml:id e implementar para esta funcionalidade ID type assignment o comportamento padrão nos seus processadores.

O princípio fundamental do projeto desta especificação foi para que o resultado do processamento de xml:id deva ser o mesmo resultado obtido por uma declaração apropriada quando detectada e usada pelo processador.

2 Terminologia

[Definição: As palavras chave must, must not, required, shall, shall not, should, should not, recommended, may, e optional, constantes desta especificação, devem ser interpretadas como descrito em [IETF RFC 2119].]
(NT: Estas palavras chaves, por seu estrito carater normativo serão traduzidas e adicionalmente permanecerão intactas, dentro do texto onde aparecem nestas especificações)

[Definição: Um processador xml:id processor é um módulo de um software que trabalha em conjunto com um processador XML XML processor com a finalidade de acessar IDs contidas em um documento XML.]

[Definição: Um xml:id error é um erro não fatal que ocorre quando um processador xml:id xml:id processor encontra um documento em desacordo com estas especificações.]

Validação é o processo de comparação de um documento XML (ou parte de um documento XML) com uma gramática ou com um conjunto de regras com a finalidade de determinar se a estrutura do documento está de acordo com as determinações gramaticais e as regras estabelecidas. Alguns validadores verificam ainda o tipo de atribuição, determinando, por exemplo, quais elementos e/ou atributos são do tipo "ID".

Embora frequentemente executados em conjunto, a validação e a determinação do tipo atribuição, são processos diferentes. Um processador de validação XML 1.0, por exemplo, pode executar o tipo atribuição usando somente declarações contidas no subconjunto interno do documento, sem ter qualquer informação sobre a validade estrutural do documento.

[Definição: O processo tipo de atribuição para ID, ID type assignment faz o valor de atributo de um xml:id ser um ID.] Isto é conseguido, frequentemente, declarando o tipo de atributo "ID" no conjunto de informações ou post-schema-validation infoset (PSVI), contudo este não é o único mecanismo possível.

Nota:

Nível de aplicação de processamento de IDs, incluindo determinação de quais elementos podem ser definidos por quais valores de ID, está fora do escopo desta especificação.

3 Sintaxe

Para [Namespaces in XML] (ou [Namespaces in XML 1.1]), prefixos começando por “xml” são reservados para uso em especificações XML e relacionadas a XML. Esta especificação licencia o uso do atributo “xml:id” como uma sintaxe comum para identificadores em XML com seu significado semântico.

Autores de documentos XML são incentivados a nomear seus atributos ID, "xml:id" com a finalidade de aumentar a interoperabilidade destes identificadores na Web.

Em processadores XML que tratam namespaces, o prefixo "xml" limita-se ao nome do namespace http://www.w3.org/XML/1998/namespace como descrito em [Namespaces in XML] (e [Namespaces in XML 1.1]). Notar que xml:id pode ainda ser usado por processadores que não reconhecem namespaces..

4 Processando o atributo xml:id

Cada atributo xml:id é processado conforme abaixo descrito:

  1. O valor de atributos é normalizado de acordo com as regras contidas em attribute-value normalization para atributos do tipo ID. Para maiores detalhes ver E Attribute Value Normalization on IDs.

    O valor da propriedade normalized value é atualizado para o valpr normalizado.

  2. O tipo de atribuição type assignment é executado de acordo com o valor normalizado.

Uma processador xml:id deve must garantir para todos os atributos xml:id o seguinte:

Um processador xml:id deverá should garantir o seguinte:

Um erro ocorrerá xml:id error se qualquer atributo xml:id não satisfizer as especificações.

O processador xml:id executa o tipo de atribuição ID type assignment em todos os atributos xml:id inclusive para aqueles que não satisfaçam as especificações.

Um processador xml:id deverá should atualizar o conjunto das informações da propriedade references, como descrito na Seção 2.3 do [XML Information Set], e atualizar também toda estrutura de implementação específica usada como cross-referência para refletir os resultados do tipo atribuição do ID.

Muitas das tecnologias de validação impõem a restrição de existência de no máximo um atributo do tipo ID para um elemento XML. Esta restrição não é uma imposição do processamento xml:id.

Esta especificação define o processamento de xml:id, mas fica a critério da aplicação a determinação da ocorrência do processamento. Usuários de aplicações que oferem facilidades para modificar documentos XML podem esperar que o processamento de xml:id ocorra sempre que houver mudança em um valor de ID.

5 Informando à aplicação

Quando ocorre um tipo de atribuição ID, o processador xml:id xml:id processor deve must informar para a aplicação tal atribuição xml:id para o atributo. Depende da implementação, a maneira como será feita esta informação.

A exigência chave é que a aplicação esteja ciente dos resultados do tipo atribuição de ID.

6 Erros

Uma violação de qualquer item desta especificação resultará em um erro xml:id error. Tais erros não são fatais, contudo devem should ser reportados pelo processador xml:id processor. É vivamente recomendado para fins de interoperabilidade que erros xml:id não sejam ignorados sem um alerta.

7 Conformidade

7.1 Conformidade com xml:id

Conformidade com xml:id para aplicações que são processadas por XML processors usando tecnologias de validação consistem no uso de xml:id construidas como explicado em 4 Processing xml:id Attributes e em conformidade com estas especificações e com as regras de validação das tecnologias validadoras.

Conformidade com xml:id para aplicações que são tratadas por processadores não validados XML processors é definida pelo reconhecimento dos atributos xml:id como explicado em 4 Processing xml:id Attributes e em conformidade com estas especificações.

Conformidade com especificações de itens que devem “must” ser implementados são obrigatórias. É recomendável que as demais especificações sejam também cumpridas.

Um documento estará em conformidade com estas especificações se não contiver xml:id errors.

7.2 Conformidade com as definições para XML

Esta especificação está de acordo com [XML Information Set]. Os itens informativos a seguir, devem must estar contidos no conjunto de informações, para possibilitar um processamento correto:

  • Itens de informação de elementos com propriedades de atributos.

  • Itens de informação de atributos com nomes para namespace, nome local e propriedades de valor normalizado.

Complementarmente as seguintes propriedades devem estar presentes na saida do conjunto de informações:

  • propriedades de tipo de atributo nos Itens de informação de atributos.

8 Extensibilidade

Esta especificação não é extensível. Não há qualquer previsão que permita ao projetista alterar o atributo xml:id ou o conjunto de valores de atributos considerados IDs, ou o local onde eles possam ocorrer, ou ainda projetar qualquer outra extensão.

A Referências

IETF RFC 2119
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. Internet Engineering Task Force, 1997. (See http://www.ietf.org/rfc/rfc2119.txt.)
XML 1.0
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., editors. Extensible Markup Language (XML) 1.0 (Third Edition). World Wide Web Consortium, 2004. (See http://www.w3.org/TR/REC-xml/.)
XML 1.1
Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, et. al., editors. Extensible Markup Language (XML) 1.1. World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml11/.)
XML Information Set
John Cowan and Richard Tobin, editors. XML Information Set (Second Edition). World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml-infoset/.)
Namespaces in XML
Tim Bray, Dave Hollander, and Andrew Layman, editors. Namespaces in XML. World Wide Web Consortium, 1999. (See http://www.w3.org/TR/REC-xml-names/.)
Namespaces in XML 1.1
Tim Bray, Dave Hollander, Andrew Layman, and Richard Tobin, editors. Namespaces in XML 1.1. World Wide Web Consortium, 2004. (See http://www.w3.org/TR/xml-names11/.)

B Referências (não normativas)

XML Schemas
Henry S. Thompson, David Beech, Murray Maloney, Noah Mendelsohn, editors. XML Schema Part 1: Structures. World Wide Web Consortium, 2001. (See http://www.w3.org/TR/xmlschema-1/.)
SOAP
Martin Gudgin, Marc Hadley, Noah Mendelsohn, et. al., editors. SOAP Version 1.2 Part 1: Messaging Framework. World Wide Web Consortium, 2003. (See http://www.w3.org/TR/soap12-part1/.)

C Impacto sobre canonização (não normativas)

A especificação Canonical XML Version 1.0 descreve um processo describes a process para herança de atributos em xml: namespace para documentos canonizados. Enquanto isto resulta razoáveis resultados com os atributos xml:lang ou xml:space o processamento de atributos xml:id neste caso é semelhante àquele em documentos que contenham xml:id errors, em especial onde o valor de atributo xml:id não seja único.

Isto é aparentemente uma falha no projeto de XML Canônico. A especificação Exclusive XML Canonicalization Version 1.0 não prevê esta possibilidade e é mais apropriada para documentos que contenham IDs.

D Tecnologias de validação (não normativas)

Este apêndice descreve como o processamento de xml:id inteage com tecnologias de validação.

D.1 Validação com DTD

Autores de DTD são incentivados a usar o atributoxml:id quando prover identificadores para os elementos declarados em suas DTDS.

O trecho de DTD abaixo, exemplifica uma declaração para o xml:id:

<!ATTLIST someElement
    xml:id     ID          #IMPLIED
>

Autores de DTD são incentivados a declarar os nomes de atributo xml:id como do tipo ID. Um documento usando o atributo xml:id e que contenha uma declaração de tipo diferente que não seja ID sempre gerará xml:id errors.

Documentos válidos e que utilizam uma declaração apropriada para atributos xml:id estão aptos a reconhecer IDs através da propriedade attribute type.

D.2 Validação com XML Schema

Autores de XML Schema são incentivados a usar atributos xml:id quando prever identificadores de elementos declarados em seus schemas. Notar que este procedimento poderá ser simplificado através do uso de importação do schema para o XML namespace e usando a declaração de atributo nele contida.

O trecho de XML Schema a seguir, para XML namespace, exemplifica uma declaração simples para o atributo xml:id:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.w3.org/XML/1998/namespace">

    <xs:attribute name="id" type="xs:ID"/>

</xs:schema>

Autores de XML Schema são incentivados a declarar nomes de atributos xml:id como do tipo xs:ID. Um documento que use o atributo xml:id e com um tipo de declaração diferente de xs:ID sempre gerará xml:id errors.

Documentos que validam atributos xml:id contra um apropriado schema para namespace XML podem reconhecer IDs através famílias do tipo de definição das propriedades PSVI.

As aplicações podem reconhecer atributos xml:id como IDs pelo uso conceitual de um Minimally Conforming Schema Processor e o schema acima.

Notar que os efeitos de um Minimally Conforming Schema Processor, ao simplesmente procurar por atributos xml:id,, são aproximados, ao processar um schema como acima, assegurando-se de que os valores de tais atributos estão em forma lexicamente correta (NCName), e de que o valor é único no documento.

D.3 Validação com RELAX NG

Autores de RELAX NG Grammar são incentivados a usar atributos xml:id quando prover identificadores de elementos declarados em seus schemas.

O trecho de RELAX NG a seguir, ilustra uma declaração para atributo xml:id:

<optional xmlns="http://relaxng.org/ns/structure/1.0"
              datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <attribute name="xml:id">

    <data type="ID"/>
  </attribute>
</optional>

Autores de RELAX NG Grammar são incentivados a declarar nomes de atributos xml:id como do tipo xs:ID. Um documento usando o atributo xml:id que tenha um tipo de declaração diferente de xs:ID sempre gerará xml:id errors.

E Normatização para valores de atributos em IDs (não normativas)

[XML 1.0] requer parsers para normalizar normalize todos os valores de atributos. A normalização expande e trata convenientemente as referências a caracteres e entidades. Os atributos do tipo ID estão sujeitos a regras adicionais de normalização: tratamento de caracteres de espaçamentos e substituição de sequência de caracteres de espaço por espaço único.

Um processador xml:id deve assegurar que ambos as etapas da normalização são executadas para todos os nomes de atributos xml:id. Em particular o parser não deve executar etapas adicionais de normalização requeridas para atributos do tipo ID quando o atributo não pode ser declarado nem pode ser declarado como um ID.

Considere o documento a seguir:

<!DOCTYPE doc [
<!ATTLIST doc xml:id ID #IMPLIED>
]>
<doc xml:id="  one
">
<para xml:id="  two
"></para>
</doc>

O valor inicial de xml:id no doc será “one” porque o parser reconhece-o como um ID. O valor inicil de para será “ two ”. Porque o parser não reconheceu um ID, não será executada a normalização adicional requerida.

Após o processamento de xml:id o valor do atributo xml:id de doc e de para será “one” e “two”, respectivamente. Estes valores apropriadamente normalizados serão armazenados no conjunto de informações para propriedades de normalized value. Havendo atributos xml:id normalizados de forma incompleta o processamento de xml:id alterará o conjunto de informações.

Nota:

Por razões de interoperabilidade os desenvolvedores de documentos deverão should usar valores completamente normalizados que sejam NCNames legais em atributos xml:id.