hola gente... posteo acá porque tengo la misma consulta que josedes
estoy armando el sitio de una agencia de turismo, y quiero poder seleccionar con facilidad el idioma. ahora, no se hasta que punto usar el script ASP para transformar los datos del xml en xhtml de la pagina y no XSLT.
me explico:
el .asp seria en principio asi:
Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Charset = "iso-8859-1"
'Response.ContentType = "text/plain"
%>
<!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">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<% Set XMLdoc = Server.CreateObject("Msxml2.DOMDocument.4.0")
XMLdoc.async = False
XMLdoc.validateOnParse = False
XMLdoc.Load (Server.MapPath("interfaz.xml"))
XMLdoc.setProperty "SelectionLanguage", "XPath"
If XMLdoc.parseError.errorCode <> 0 Then
Response.Write(Cstr(XMLdoc.parseError.filepos & "<br>"))
Response.Write(Cstr(XMLdoc.parseError.line & "<br>"))
Response.Write(Cstr(XMLdoc.parseError.linepos & "<br>"))
Response.Write(Cstr(XMLdoc.parseError.reason & "<br>"))
Response.Write(Cstr(XMLdoc.parseError.srctext & "<br>"))
Response.Write(Cstr(XMLdoc.parseError.errorCode & "<br>"))
End If
lang = "espaniol"
Set elementos = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/" & lang & "[@ocultar!='si']/nombre")
Set titulos = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/" & lang & "[@ocultar!='si']/titulo")
Set urls = XMLdoc.selectNodes ("/secciones/navegacion/menu/elemento[@ocultar!='si']/url")
For i = 0 to elementos.length - 1
Set colElementos = elementos.nextNode
Set colUrls = urls.nextNode
Set colTitulos = titulos.nextNode
html = "<a href=" & Chr(34) & colUrls.text & Chr(34) & " title=" & Chr(34) & colTitulos.text & Chr(34) & ">" & colElementos.text & "</a><br />"
Response.Write (html)
'Response.Write(SelectSingleNode("/secciones/navegacion/menu/elemento[@ocultar!='si']["&Cstr(i)&"]/espaniol[@ocultar!='si']/nombre").Text)
Next
%>
</body>
</html>
y el .xml es el siguiente:
Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<secciones>
<navegacion>
<menu>
<elemento ocultar="" destacado="si">
<nombre>Home</nombre>
<espaniol ocultar="">
<nombre>Home</nombre>
<titulo>Página principal de Partir Viajes E.V.T.</titulo>
</espaniol>
<inglés ocultar="">
<nombre>Home </nombre>
<titulo>Home page of Partir Viajes.</titulo>
</inglés>
<url>../index.asp</url>
</elemento>
<elemento ocultar="" destacado="">
<nombre>Aereos</nombre>
<espaniol ocultar="">
<nombre>Pasajes Aéreos</nombre>
<titulo>Información sobre pasajes aéreos en la Argentina y hacia el exterior.</titulo>
</espaniol>
<inglés ocultar="">
<nombre>Plane tickets</nombre>
<titulo>View details and prices of plane tickets to travel within Argentina.</titulo>
</inglés>
<url>./aereos.asp</url>
</elemento>
<elemento ocultar="" destacado="">
<nombre>Destinos</nombre>
<espaniol ocultar="">
<nombre>Destinos turísticos.</nombre>
<titulo>Información sobre paquetes turísticos en la Argentina y hacia el exterior.</titulo>
</espaniol>
<inglés ocultar="si">
<nombre/>
<titulo/>
</inglés>
<url>./destinos.asp</url>
</elemento>
<elemento ocultar="" destacado="">
<nombre>Argentina</nombre>
<espaniol ocultar="si">
<nombre/>
<titulo/>
</espaniol>
<inglés ocultar="">
<nombre>Visit Argentina.</nombre>
<titulo>Choose among different ways to enjoy your vacations in Argentina and which places to visit.</titulo>
</inglés>
<url>./argentina.asp</url>
</elemento>
<elemento ocultar="" destacado="">
<nombre>Institucional</nombre>
<espaniol ocultar="">
<nombre>La Empresa</nombre>
<titulo>Conozca nuestra trayectoria y por qué somos la opción más confiable a la hora de planear su viaje o ayudar a su empresa a alcanzar nuevos mercados. Vea nuestra información de contacto.</titulo>
</espaniol>
<inglés ocultar="">
<nombre>About Us</nombre>
<titulo>Know about us and why our clients trust us for the planning of their vacations or their professional needs.</titulo>
</inglés>
<url>./institucional.asp</url>
</elemento>
</menu>
<mapa>
<elemento mostrar="" destacado="">
<nombre>Argentina</nombre>
<espaniol>
<nombre>Argentina</nombre>
<titulo>Conozca distintas opciones para pasar sus vacaciones en Argentina.</titulo>
</espaniol>
<inglés>
<nombre>
</nombre>
<titulo>
</titulo>
</inglés>
<url>arg
</url>
</elemento>
</mapa>
</navegacion>
</secciones>
en el xml tengo un nodo /secciones/navegacion/menu que tiene los links de uno de los menues (horizontal y arriba) de la p'agina.
el asp selecciona todos los elementos que no sean ocultos y los transforma en links.
el problema llega cuando, por ejemplo, tengo un elemento en el que quiero esconder el boton en castellano. la agencia de turismo esta en buenos aires, entonces si entra alguien de argentina deberia ver la siguiente barra de menus:
home | pasajes | destinos turisticos | la empresa
pero quiero que un angloparlante vea:
home | visit argentina | about us
por eso los nodos elemento/espaniol tienen un atributo que se llama ocultar.
ahora, con la consulta XPath que mande ("/secciones/navegacion/menu/elemento[@ocultar!='si']/"&lang&"[@ocultar!='si']/nombre") el asp me devuelve una coleccion de 4 de los 5 objetos, que son los childs elemento #1,2,4 y 5 de menu. ahora, cuando lo tengo que juntar con la URL, el script agarra las primeras 4, por lo que en los dos ultimos links no coinciden la URL con el titulo del link. es un quilombo, ¿se entiende? de cualquier forma en
http://www.partirviajes.com.ar/v3/xml/xml.asp pueden ver el codigo que generan los archivos que pase.
---------------------------------------------------------------------
ahora
MÁS EN GENERAL, ¿cómo me convendría hacer con el tema de la interfaz? ¿usar ASP o XSLT (el problema que le veo al XSLT es que cada parte del sitio tendría que transformar el xhtml según donde se encuentre... para la barra de menú tendría que transformar en una lista, etc)? ¿debería cambiar la estructura del XML?
mil gracias desde ya!!!