
11/10/2007, 12:50
|
| | 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é - |