Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/10/2007, 12:50
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 1 mes
Puntos: 7
Re: ASP y XML – Una aproximación: Cambiar el idioma a nuestro sitio web

Describiendo el Código

Nuestra clase clsIdioma contiene 4 métodos, un constructor y un destructor. No contiene propiedades por que no las necesita. Se usa asi de facil:

Dim objIdioma
set objIdioma = new clsIdioma

Solo nos queda cargar el archivo XML

Load

Dim strError
strError = objIdioma.Load(Server.MapPath("idiomas/" & Idioma & "/general.xml"))

Si ocurre algún error al cargar la página, el método Load nos devuelve una cadena con el error para que podamos ponerlo donde queramos. La variable Idioma veremos de donde viene más adelante.

Como ya vimos como cargar un archivo XML en el objeto XMLDOM no me voy a repetir. Pasemos a los otros 3 métodos que se refieren a los 3 tipos que hablábamos al principio de esta sección:

1 – GetIdioma (para los datos genéricos)
2 – getMenus (Devuelve un recordset con los menús.)
3 – getLangMenus (devuelve un Recordset con los idiomas disponibles).

Veámoslos más detenidamente.

getIdioma

Esta función es muy simple: Busca en el archivo XML aquellos nodos cuya etiqueta coincida con la que solicitamos y nos devuelve el texto que contenga. La vimos ligeramente en capítulos anteriores y, como veis, tiene un bloque on error para evitar que nos falle en la búsqueda. Si no la encuentra, nos devolverá la etiqueta solicitada entre corchetes.

Public function GetIdioma(etiqueta)
Dim Texto
on error resume next
Texto = idiomaXML.getElementsByTagName(etiqueta).Item(0).T ext
if err.number > 0 then
GetIdioma = "[" & etiqueta & "]"
else
getidioma=texto
end if
on error goto 0

end function

Quisiera recalcar el método getElementsByTagName. Fijaos en como funciona de una forma práctica:

getElementsByTagName(“NombrePagina”).Item(0).Text

corresponde al texto del primer item que encuentre en el nodo NombrePagina. Si hubiera encontrado varios nodos con la misma etiqueta, nos hubiera devuelto una colección con todos los que hubiera encontrado:

<NombrePagina>Mi Pagina 1</NombrePagina>
<NombrePagina>Mi Pagina 2</NombrePagina>

getElementsByTagName(“NombrePagina”).length nos hubiera devuelto 2
Yo lo uso para encontrar etiquetas únicas ya que si encuentra más de una me devolverá el texto de la primera (0) pero puede usarse para rellenar combos, etc
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -