# This file stores localized messages for the Xerces
# DOM implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#

BadMessageKey = N\u00E3o foi poss\u00EDvel encontrar a mensagem de erro correspondente \u00E0 chave da mensagem.
FormatFailed = Ocorreu um erro interno ao formatar a mensagem a seguir:\n  

# DOM Core

# exception codes
DOMSTRING_SIZE_ERR = A faixa de texto especificada n\u00E3o se ajusta a DOMString. 
HIERARCHY_REQUEST_ERR  = Houve uma tentativa de inserir um n\u00F3 onde n\u00E3o era permitido. 
INDEX_SIZE_ERR = O \u00EDndice ou o tamanho \u00E9 negativo ou maior que o valor permitido.
INUSE_ATTRIBUTE_ERR = Houve uma tentativa de adicionar um atributo que j\u00E1 est\u00E1 sendo usado em outro lugar.
INVALID_ACCESS_ERR  = Um par\u00E2metro ou uma opera\u00E7\u00E3o n\u00E3o suportado pelo objeto subjacente. 
INVALID_CHARACTER_ERR = Um caractere XML inv\u00E1lido ou ilegal foi especificado. 
INVALID_MODIFICATION_ERR =  Houve uma tentativa de modificar o tipo de objeto subjacente. 
INVALID_STATE_ERR = Houve uma tentativa de usar um objeto que n\u00E3o \u00E9 mais utiliz\u00E1vel. 
NAMESPACE_ERR = Houve uma tentativa de criar ou alterar um objeto de uma forma incorreta em rela\u00E7\u00E3o aos namespaces.
NOT_FOUND_ERR = Houve uma tentativa de fazer refer\u00EAncia a um n\u00F3 em um contexto no qual ele n\u00E3o existe.
NOT_SUPPORTED_ERR = A implementa\u00E7\u00E3o n\u00E3o suporta o tipo solicitado de objeto ou opera\u00E7\u00E3o. 
NO_DATA_ALLOWED_ERR = Os dados foram especificados para um n\u00F3 que n\u00E3o suporta dados.
NO_MODIFICATION_ALLOWED_ERR = Foi feita uma tentativa de modificar um objeto no qual n\u00E3o s\u00E3o permitidas modifica\u00E7\u00F5es.
SYNTAX_ERR = Uma string inv\u00E1lida ou ilegal foi especificada. 
VALIDATION_ERR = Uma chamada para um m\u00E9todo como insertBefore ou removeChild tornaria o N\u00F3 inv\u00E1lido em rela\u00E7\u00E3o \u00E0 gram\u00E1tica do documento.
WRONG_DOCUMENT_ERR = Um n\u00F3 \u00E9 usado em um documento diferente daquele que foi criado.
TYPE_MISMATCH_ERR = O tipo de valor do nome deste par\u00E2metro \u00E9 incompat\u00EDvel com o tipo de valor esperado. 
 
#error messages or exceptions
FEATURE_NOT_SUPPORTED = O par\u00E2metro {0} \u00E9 reconhecido, mas o valor solicitado n\u00E3o pode ser definido.
FEATURE_NOT_FOUND = O par\u00E2metro {0} n\u00E3o \u00E9 reconhecido.
STRING_TOO_LONG   = A string resultante \u00E9 muito longa para se ajustar a uma DOMString: ''{0}''.

#DOM Level 3 DOMError codes
wf-invalid-character =  O texto {0} do n\u00F3 {1} cont\u00E9m caracteres XML inv\u00E1lidos.
wf-invalid-character-in-node-name = O n\u00F3 {0} com o nome {1} cont\u00E9m caracteres XML inv\u00E1lidos.
cdata-sections-splitted =  Se\u00E7\u00F5es CDATA que cont\u00EAm o marcador '']]>'' de termina\u00E7\u00E3o de se\u00E7\u00E3o CDATA
doctype-not-allowed = A declara\u00E7\u00E3o DOCTYPE n\u00E3o \u00E9 permitida.
unsupported-encoding = A codifica\u00E7\u00E3o {0} n\u00E3o \u00E9 suportada.

#Error codes used in DOM Normalizer
InvalidXMLCharInDOM = Um caractere XML inv\u00E1lido (Unicode: 0x {0}) foi encontrado no DOM durante a normaliza\u00E7\u00E3o.
UndeclaredEntRefInAttrValue = O atributo "{0}" valor "{1}" mencionou uma entidade que n\u00E3o foi declarada.
NullLocalElementName = Um nome de local nulo foi encontrado durante a normaliza\u00E7\u00E3o do namespace do elemento {0}.
NullLocalAttrName = Um nome de local nulo foi encontrado durante a normaliza\u00E7\u00E3o do namespace do atributo {0}.

#Error codes used in DOMParser
InvalidDocumentClassName = O nome da classe do factory do documento "{0}" usado para construir a \u00E1rvore DOM n\u00E3o \u00E9 do tipo org.w3c.dom.Document.
MissingDocumentClassName = N\u00E3o foi poss\u00EDvel encontrar o nome da classe do factory do documento "{0}" usado para construir a \u00E1rvore DOM.
CannotCreateDocumentClass = N\u00E3o foi poss\u00EDvel construir a classe com o nome "{0}" como um org.w3c.dom.Document.

# Error codes used by JAXP DocumentBuilder
jaxp-order-not-supported = A propriedade ''{0}'' deve ser estabelecida antes da defini\u00E7\u00E3o da propriedade ''{1}''.
jaxp-null-input-source = A origem especificada n\u00E3o pode ser nula.

#Ranges
BAD_BOUNDARYPOINTS_ERR = Os pontos-limite de uma Faixa n\u00E3o atendem aos requisitos espec\u00EDficos.
INVALID_NODE_TYPE_ERR = O container de um ponto-limite de uma Faixa est\u00E1 sendo definido para um n\u00F3 de um tipo inv\u00E1lido ou um n\u00F3 com um ancestral de um tipo inv\u00E1lido.


#Events
UNSPECIFIED_EVENT_TYPE_ERR = O tipo de Evento n\u00E3o foi especificado por meio da inicializa\u00E7\u00E3o do evento antes do m\u00E9todo ser chamado. 


jaxp-schema-support=O m\u00E9todo setSchema e a propriedade schemaLanguage foram usados

jaxp_feature_not_supported=O recurso "{0}" n\u00E3o \u00E9 suportado.
