aboutsummaryrefslogtreecommitdiff
path: root/files/es/archive/mozilla/firefox
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/archive/mozilla/firefox')
-rw-r--r--files/es/archive/mozilla/firefox/el_uso_de_microformatos/index.html218
-rw-r--r--files/es/archive/mozilla/firefox/index.html8
-rw-r--r--files/es/archive/mozilla/firefox/soap_en_los_navegadores_basados_en_gecko/index.html264
3 files changed, 490 insertions, 0 deletions
diff --git a/files/es/archive/mozilla/firefox/el_uso_de_microformatos/index.html b/files/es/archive/mozilla/firefox/el_uso_de_microformatos/index.html
new file mode 100644
index 0000000000..e264fc04c9
--- /dev/null
+++ b/files/es/archive/mozilla/firefox/el_uso_de_microformatos/index.html
@@ -0,0 +1,218 @@
+---
+title: El uso de microformatos
+slug: Archive/Mozilla/Firefox/El_uso_de_microformatos
+tags:
+ - Firefox 3
+ - Microformatos
+translation_of: Archive/Mozilla/Firefox/Using_microformats
+---
+<p> Los microformatos permiten a un sitio web ofrecer datos semánticos a los navegadores de forma que sea posible presentar resúmenes de la información en una página sin que sea necesario saber cómo analizar el documento en si mismo. Firefox 3 implementa un objeto global <code>Microformats</code> que permite el acceso a estos microformatos. Este objeto y su API hacen de la búsqueda y lectura de microformatos, algo fácil.</p>
+
+<h2 id="Cargar_el_API_de_Microformatos" name="Cargar_el_API_de_Microformatos">Cargar el API de Microformatos</h2>
+
+<p>El objeto <code>Microformats</code> se crea usando el nuevo cargador de JavaScript integrado en Firefox 3. Para usar este API, primero necesitas cargar el objeto:</p>
+
+<pre class="eval"><span class="nowiki">Components.utils.import("resource://gre/modules/Microformats.js");</span>
+</pre>
+
+<p>Una vez cargado del API de Microformatos, puedes manejar los Microformatos usando los métodos que aquí listamos. Para información sobre cómo analizar los Microformatos, lee: <a href="es/Analizar_microformatos_en_JavaScript">Analizar microformatos en JavaScript</a>.</p>
+
+<h2 id="Microformatos_predefinidos" name="Microformatos_predefinidos">Microformatos predefinidos</h2>
+
+<p>Firefox 3 ofrece varios Microformatos integrados:</p>
+
+<dl>
+ <dt><code><a href="es/El_Microformato_adr">adr</a></code></dt>
+ <dd>Representa una dirección (como una calle o una dirección postal).</dd>
+ <dt><code><a href="es/El_Microformato_geo">geo</a></code></dt>
+ <dd>Representa una localización geográfica usando coordenadas de latitud y longitud.</dd>
+ <dt><code><a href="es/El_Microformato_hCard">hCard</a></code></dt>
+ <dd>Representa la información de contacto de una persona.</dd>
+ <dt><code><a href="es/El_Microformato_hCalendar">hCalendar</a></code></dt>
+ <dd>Representa una entrada en un calendario o la cita en una agenda.</dd>
+ <dt><code><a href="es/El_Microformato_tag">tag</a></code></dt>
+ <dd>Se usa para añadir pestañas a otros Microformatos.</dd>
+</dl>
+
+<h2 id="M.C3.A9todos" name="M.C3.A9todos">Métodos</h2>
+
+<h3 id="add.28.29" name="add.28.29">add()</h3>
+
+<p>Añade un nuevo Microformato al módulo de Microformatos.</p>
+
+<div class="note">
+<p><strong>Nota:</strong> Si ya existe un microformato con el mismo nombre, será reemplazado por el nuevo.</p>
+</div>
+
+<pre class="eval">add(name, definition);
+</pre>
+
+<h6 id="Par.C3.A1metros" name="Par.C3.A1metros">Parámetros</h6>
+
+<dl>
+ <dt>name</dt>
+ <dd>El nombre del microformato a añadir al módulo.</dd>
+ <dt>definición</dt>
+ <dd>Una estructura JavaScript que describe el microformato. Ver <a href="es/Crear_microformatos_en_JavaScript">Crear microformatos en JavaScript</a> para más detalles.</dd>
+</dl>
+
+<h3 id="count.28.29" name="count.28.29">count()</h3>
+
+<p>Cuenta el número de microformatos que hay en un documento que cumple con determinado criterio.</p>
+
+<pre class="eval">numMicroformats = Microformats.count(name, rootElement, options);
+</pre>
+
+<h6 id="Par.C3.A1metros_2" name="Par.C3.A1metros_2">Parámetros</h6>
+
+<dl>
+ <dt>name</dt>
+ <dd>El nombre del microformato que queremos contar.</dd>
+ <dt>rootElement</dt>
+ <dd>Requerido. El elemento DOM en dónde empezar la búsqueda. Si deseas buscar en el documento entero, especifica <code>content.document</code>.</dd>
+ <dt>options</dt>
+ <dd>Opcional. Cuando se especifica, este es un objeto JavaScript que contiene cero o más de los siguientes flag:</dd>
+</dl>
+
+<blockquote>
+<dl>
+ <dt>recurseExternalFrames</dt>
+ <dd>Si es <code>true</code>, se incluyen los marcos (frames) hijos en la búsqueda. Por defecto es <code>true</code>.</dd>
+ <dt>showHidden</dt>
+ <dd>Si es <code>true</code>, se añaden microformatos ocultos, en caso contrario, se ignoran. Por defecto es <code>false</code>.</dd>
+ <dt>debug</dt>
+ <dd>Se especifica a <code>true</code> cuando se usa el modo de "debug", en caso contrario es <code>false</code>. Por defecto es <code>false</code>.</dd>
+</dl>
+</blockquote>
+
+<h6 id="Valor_devuelto" name="Valor_devuelto">Valor devuelto</h6>
+
+<p>Un valor entero que indica el número de microformatos que cumplen el criterio especificado.</p>
+
+<h3 id="debug.28.29" name="debug.28.29">debug()</h3>
+
+<p>Devuelve una cadena que describe un objeto microformato.</p>
+
+<div class="note">
+<p><strong>Nota:</strong> Pueds simplemente llamar a <code>debug()</code> en un objeto microformato: <code>microformatObject.debug()</code> en lugar de usar este método, si lo prefieres.</p>
+</div>
+
+<pre class="eval">dumpString = debug(microformatObject)
+</pre>
+
+<h6 id="Par.C3.A1metros_3" name="Par.C3.A1metros_3">Parámetros</h6>
+
+<dl>
+ <dt>microformatObject</dt>
+ <dd>El objeto microformato a descargar.</dd>
+</dl>
+
+<h6 id="Valor_devuelto_2" name="Valor_devuelto_2">Valor devuelto</h6>
+
+<p>Una cadena que describe el contenido del objeto microformato especificado.</p>
+
+<h3 id="get.28.29" name="get.28.29">get()</h3>
+
+<p>Devuelve una matriz de objetos microformato encontrados, que cumplen con el criterio especificado.</p>
+
+<pre class="eval">microformatsArray = Microformats.get(name, rootElement, options, targetArray);
+</pre>
+
+<h6 id="Par.C3.A1metros_4" name="Par.C3.A1metros_4">Parámetros</h6>
+
+<dl>
+ <dt>name</dt>
+ <dd>El nombre del microformato a encontrar.</dd>
+ <dt>rootElement</dt>
+ <dd>Requerido. El elemento DOM donde debe comenzar la búsqueda. Si quieres buscar el documento entero, especifica <code>content.document</code>.</dd>
+ <dt>options</dt>
+ <dd>Opcional. Si se especifica, es un objeto JavaScript que contiene cero o más de los siguientes flag:</dd>
+</dl>
+
+<blockquote>
+<dl>
+ <dt>recurseExternalFrames</dt>
+ <dd>Si es <code>true</code>, se incluyen los marcos hijo que hagan referencia a contenido externo, en la búsqueda. Por defecto es <code>true</code>.</dd>
+ <dt>showHidden</dt>
+ <dd>Si es <code>true</code>, se incluyen los microformatos ocultos, en caso contrario se ignoran. Por defecto es <code>false</code>.</dd>
+ <dt>debug</dt>
+ <dd>Especifica <code>true</code> si se está en modo "debug", en caso contrario es <code>false</code>. Por defecto es <code>false</code>.</dd>
+</dl>
+</blockquote>
+
+<dl>
+ <dt>targetArray</dt>
+ <dd>Opcional. Cuando se especifica, es una matriz de objetos microformatos en donde se añaden lso objetos microformato resultantes de la búsqueda.</dd>
+</dl>
+
+<h6 id="Valor_devuelto_3" name="Valor_devuelto_3">Valor devuelto</h6>
+
+<p>Una nueva matriz de objetos microformato que cumplen con el criterio de búsqueda, o la matriz especificada por microformats con los nuevos microformatos encontrados añadidos.</p>
+
+<h3 id="getNamesFromNode.28.29" name="getNamesFromNode.28.29">getNamesFromNode()</h3>
+
+<p>Devuelve una lista, delimitada por espacios, de nombres de microformatos que corresponde al nodo especificado.</p>
+
+<pre class="eval">nameList = Microformats.getNamesFromNode(node);
+</pre>
+
+<h6 id="Par.C3.A1metros_5" name="Par.C3.A1metros_5">Parámetros</h6>
+
+<dl>
+ <dt>node</dt>
+ <dd>El nodo en el cual leer una lista de nombres de microformatos.</dd>
+</dl>
+
+<h6 id="Valor_devuelto_4" name="Valor_devuelto_4">Valor devuelto</h6>
+
+<p>Si el node especificado es un microformato, el resultado es una cadena conteniendo, delimitados por especios, los nombres de todos los microformatos que corresponden al nodo. Si el nodo no es un microformato, no se devuelve nada.</p>
+
+<h3 id="getParent.28.29" name="getParent.28.29">getParent()</h3>
+
+<p>Devuelve el nodo padre del microformato especificado o hijo de un microformato.</p>
+
+<pre class="eval">parentNode = Microformats.getParent(node);
+</pre>
+
+<h6 id="Par.C3.A1metros_6" name="Par.C3.A1metros_6">Parámetros</h6>
+
+<dl>
+ <dt>node</dt>
+ <dd>El nodo cuyo padre quieres obtener.</dd>
+</dl>
+
+<h6 id="Valor_devuelto_5" name="Valor_devuelto_5">Valor devuelto</h6>
+
+<p>El padre del nodo especificado. No devuelve nada si el node especificado no es un microformato o el hijo de un microformato.</p>
+
+<h3 id="isMicroformat.28.29" name="isMicroformat.28.29">isMicroformat()</h3>
+
+<p>Determina si el nodo DOM especificado es o no un microformato.</p>
+
+<pre class="eval">flag = Microformats.isMicroformat(node);
+</pre>
+
+<h6 id="Par.C3.A1metros_7" name="Par.C3.A1metros_7">Parámetros</h6>
+
+<dl>
+ <dt>node</dt>
+ <dd>El nodo DOM a comprobar si es un microformato.</dd>
+</dl>
+
+<h6 id="Valor_devuelto_6" name="Valor_devuelto_6">Valor devuelto</h6>
+
+<p>Devuelve <code>true</code> si el nodo es un microformato y <code>false</code> en caso contrario.</p>
+
+<div class="note">
+<p><strong>Nota:</strong> Este método<em>no</em> devuelve <code>true</code> si el nodo es hijo de un microformato.</p>
+</div>
+
+<h2 id="Ver_también">Ver también</h2>
+
+<p> </p>
+
+<ul>
+ <li><a href="http://www.microformats.org/" title="http://www.microformats.org">Microformats.org</a></li>
+</ul>
+
+<p> </p>
diff --git a/files/es/archive/mozilla/firefox/index.html b/files/es/archive/mozilla/firefox/index.html
new file mode 100644
index 0000000000..9e61c718ff
--- /dev/null
+++ b/files/es/archive/mozilla/firefox/index.html
@@ -0,0 +1,8 @@
+---
+title: Firefox
+slug: Archive/Mozilla/Firefox
+translation_of: Archive/Mozilla/Firefox
+---
+<p>In progress. Out-of-date information about the Firefox project.</p>
+
+<p></p>
diff --git a/files/es/archive/mozilla/firefox/soap_en_los_navegadores_basados_en_gecko/index.html b/files/es/archive/mozilla/firefox/soap_en_los_navegadores_basados_en_gecko/index.html
new file mode 100644
index 0000000000..0ab155e7b2
--- /dev/null
+++ b/files/es/archive/mozilla/firefox/soap_en_los_navegadores_basados_en_gecko/index.html
@@ -0,0 +1,264 @@
+---
+title: SOAP en los navegadores basados en Gecko
+slug: Archive/Mozilla/Firefox/SOAP_en_los_navegadores_basados_en_Gecko
+tags:
+ - SOAP
+ - Servicios_Web_XML
+ - Todas_las_Categorías
+translation_of: Archive/Mozilla/Firefox/SOAP_in_Gecko-based_Browsers
+---
+<p> </p>
+<p>Este artículo muestra cómo acceder a los servicios web utilizando las posibilidades de SOAP y JavaScript disponibles en los últimos navegadores basados en Gecko.</p>
+<h3 id="Introducci.C3.B3n" name="Introducci.C3.B3n">Introducción</h3>
+<p><a class="external" href="http://www.w3.org/TR/SOAP/">SOAP</a> (Simple Object Access Protocol, protocolo simple de acceso a objetos) es la base sobre la que se construyen los servicios web. Es un protocolo basado en XML utilizado para poder comunicarse e interoperar con los servicios web. Mozilla 1.0 (sobre el cual ha sido construido Netscape 7.0x) y Firefox son capaces de comunicarse directamente con los servicios web a través de su implementación de SOAP a bajo nivel a través de JavaScript.</p>
+<p>La interfaz de JavaScript de Gecko que establece llamadas SOAP es una API de bajo nivel que precisa de una para construir el mensaje SOAP utilizando varios objetos de JavaScript específicos para SOAP. Este artículo explicará las operaciones básicas de SOAP. Para más detalles véase la API de SOAP a bajo nivel en Gecko <a class="external" href="http://lxr.mozilla.org/mozilla/source/extensions/webservices/docs/Soap_Scripts_in_Mozilla.html">aquí</a>.</p>
+<p><span class="comment">Traducido cross domain access como acceso multidominio ¿¿??</span> El uso de JavaScript para la comunicación con los servicios web está sujeto a las mismas políticas de seguridad que otros scripts en términos de acceso multidominio. Por tanto, el acceso a servicios web ubicados en servidores distintos al servidor en el que se está ejecutando JavaScript violará la política de multidominio. Este artículo mostrará cómo esquivar temporalmente esto para hacer pruebas.</p>
+<h3 id="Configurar_una_llamada_SOAP" name="Configurar_una_llamada_SOAP">Configurar una llamada SOAP</h3>
+<p>El objeto más básico es <code>SOAPCall</code>, el cual es usado para iniciar e invocar una llamada SOAP.</p>
+<p>Figura 1 : Configuración básica e invocación de una llamada SOAP</p>
+<pre>var mySOAPCall = new SOAPCall();
+mySOAPCall.transportURI = "http-based service URI"
+
+var parameters = new Array();
+mySOAPCall.encode(SOAPCall.VERSION_1_1,
+ // method
+ "method", "namespaceURI",
+ // header block
+ 0, null,
+ // parameter
+ parameters.length, parameters);
+
+var response = mySOAPCall.invoke();
+</pre>
+<p>El objeto <code>SOAPCall</code> posee un miembro llamado <code>transportURI</code> que es el URI de la localización a donde se debe enviar la llamada SOAP. El método <code>encode()</code> necesita el nombre del método a llamar en el servicio web, su
+ <i>
+ namespaceURI</i>
+ , el número de
+ <i>
+ SOAPParameters</i>
+ pasados y un array de
+ <i>
+ SOAPParameters</i>
+ que contendrá todos los parámetros. Todos estos parámetros pueden conocerse en el fichero WSDL del servicio web, el cual será explicado en la sección de ejemplos.</p>
+<p>Los parámetros SOAP son creados usando el objeto <code>SOAPParameter</code>. Son pares de nombre/valor que son pasados al servicio web.</p>
+<p>Figura 2: Crear un parámetro SOAP</p>
+<pre>var param = new SOAPParameter();
+param.name = "translationmode";
+param.value = "en_fr";
+</pre>
+<h3 id="Manejar_una_respuesta" name="Manejar_una_respuesta">Manejar una respuesta</h3>
+<p>Una vez <code>invoke()</code> ha sido llamado, Gecko genera el contenedor SOAP y lo envía al URI especificado. Como la petición es síncrona, la respuesta es el valor devuelto desde <code>invoke()</code>.</p>
+<p>Figura 3 : Manejar la respuesta de una llamada SOAP</p>
+<pre>var returnObject = mySOAPCall.invoke();
+
+if(returnObject.fault){
+ alert("An error occured: " + returnObject.fault.faultString);
+} else {
+ var response = new Array();
+ response = returnObject.getParameters(false, {});
+ alert("Return value: " + response[0].value);
+}
+</pre>
+<p>El valor devuelto desde <code>invoke()</code> se guarda y comprueba en el miembro <code>fault</code>. Si éste existe, entonces ocurrió un error en el servicio web y el mensaje de error se guarda en <code>fault.faultString</code>. Si <code>fault</code> no existe, se puede llamar a la función <code>getParameters()</code> del objeto retornado para obtener los SOAPParameters devueltos.</p>
+<h3 id="Ejemplo" name="Ejemplo">Ejemplo</h3>
+<p>El siguiente ejemplo utiliza un servicio web real, Bablfish, proporcionado por <a class="external" href="http://www.xmethods.net/">xmethods.net</a>. El servicio web Babelfish permite la traducción entre varios idiomas. Toma como entrada dos parámetros: una cadena con formato "&lt;idioma_original&gt;_&lt;idioma_destino&gt;" y otra cadena con el texto a traducir. El fichero WSDL para el servicio web de Bablfish está disponible <a class="external" href="http://www.xmethods.net/sd/2001/BabelFishService.wsdl">aquí</a> y contiene toda la información necesaria para configurar y hacer una llamada SOAP de bajo nivel al servicio web.</p>
+<p>El primer paso es conocer la localización del servicio web, la cual será el valor del miembro <code>transportURI</code> de <code>SOAPCall</code>. Esto se puede sacar del elemento <code>service</code> del WSDL, concretamente del atributo <code>location</code> de <code>soap:address</code>.</p>
+<p>Figura 4 : Obtener la localización del servicio web a partir de su WSDL</p>
+<pre class="eval"><strong>WSDL:</strong>
+ &lt;service name="BabelFishService"&gt;
+ &lt;documentation&gt;
+ Translates text of up to 5k in length, between a variety of languages.
+ &lt;/documentation&gt;
+ &lt;port name="BabelFishPort" binding="tns:BabelFishBinding"&gt;
+ <span style="color: green;">&lt;soap:address location="<span class="nowiki">http://services.xmethods.net:80/perl/soaplite.cgi</span>"/&gt;</span>
+ &lt;/port&gt;
+ &lt;service&gt;
+
+<strong>JavaScript:</strong>
+ var babelFishCall = new SOAPCall();
+ babelFishCall.transportURI = "<span class="nowiki">http://services.xmethods.net:80/perl/soaplite.cgi</span>";
+ ...
+</pre>
+<p>El siguiente paso es el más complicado: conocer exactamente qué parámetros espera recibir el servicio web. El servicio web de Babelfish sólo tiene un método, "Babelfish", el cual está representado en el WSDL en las etiquetas <code>operation</code> y que son hijas del elemento <code>portType</code>. Cada <code>operation</code> del WSDL tiene dos hijos: los elementos <code>input</code> y <code>output</code>, los cuales contienen el tipo esperado. Los tipos están definidos en los elementos <code>message</code> de los cuales hay dos: <code>BabelFishRequest</code>, que es lo que va a ser pasado al servicio web y <code>babelFishResponse</code>, que es el tipo devuelto.</p>
+<p>BabelFish espera recibir dos parámetros de entrada: <code>translationmode</code> y <code>sourcedata</code>. El ejemplo mostrado en la figura 5 traducirá la cadena "I am" del inglés al francés.</p>
+<p>Figura 5 : Estableciendo los parámetros necesarios</p>
+<pre class="eval"><strong>WSDL:</strong>
+ &lt;message <span style="color: blue;">name="BabelFishRequest"&gt;</span>
+ <span style="color: green;">&lt;part name="translationmode" type="xsd:string"/&gt;</span>
+ <span style="color: green;">&lt;part name="sourcedata" type="xsd:string"/&gt;</span>
+ &lt;/message&gt;
+
+ &lt;message name="BabelFishResponse"&gt;
+ &lt;part name="return" type="xsd:string"/&gt;
+ &lt;/message&gt;
+
+ &lt;portType name="BabelFishPortType"&gt;
+ &lt;operation name="BabelFish"&gt;
+ <span style="color: green;">&lt;input message="tns:BabelFishRequest"/&gt;</span>
+ &lt;output message="tns:BabelFishResponse"/&gt;
+ &lt;/operation&gt;
+ &lt;/portType&gt;
+
+<strong>JavaScript:</strong>
+ // SOAP parameters
+ var param1 = new SOAPParameter();
+ param1.value = "en_fr";
+ param1.name = "translationmode";
+
+ var param2 = new SOAPParameter();
+ param2.value = "I am";
+
+ param2.name = "sourcedate";
+
+ // combine the 2 params into an array
+ var myParamArray = [param1,param2];
+</pre>
+<p>Luego, es hora de configurar e invocar el objeto <code>SOAPCall</code>. "BabelFish" es el método usado por el ejemplo para el servicio web. El siguiente parámetro es el espacio de nombres que se espera para pasárselo al servicio web para el método <code>BabelFish</code>.</p>
+<p>Esto se puede saber mirando el elemento <code>binding</code> del WSDL. El elemento <code>binding</code> tiene un hijo <code>operation</code> para el método <code>BabelFish</code>. El espacio de nombres necesarios es el valor del atributo <code>namespace</code> de <code>soap:body</code> dentro del elemento <code>input</code>.</p>
+<p>Figura 6 : Configurando el método <code>encode</code></p>
+<pre class="eval"><strong>WSDL:</strong>
+ &lt;binding name="BabelFishBinding" type="tns:BabelFishPortType"&gt;
+ &lt;soap:binding style="rpc" transport="<span class="nowiki">http://schemas.xmlsoap.org/soap/http</span>"/&gt;
+ &lt;operation name="BabelFish"&gt;
+ &lt;soap:operation soapAction="urn:xmethodsBabelFish#BabelFish"/&gt;
+ &lt;input&gt;
+ <span style="color: green;">&lt;soap:body use="encoded" namespace="urn:xmethodsBabelFish"
+ encodingStyle="<span class="nowiki">http://schemas.xmlsoap.org/soap/encoding/</span>"/&gt;</span>
+ &lt;/input&gt;
+ ...
+ &lt;/operation&gt;
+ &lt;/binding&gt;
+
+<strong>JavaScript:</strong>
+ babelFishCall.encode(0, "BabelFish", "urn:xmethodsBabelFish", 0, null, myParamArray.length, myParamArray);
+
+ var translation = babelFishCall.invoke();
+</pre>
+<p>Como muestra la figura 5, la respuesta del método de BabelFish ("BabelFishResponse") tiene un parámetro, concretamente una cadena de texto. Tras asegurarnos de que no se ha devuelto un error, el método <code>getParameters()</code> del objeto devuelto es usado para obtener un array de SOAPResponses. Dado que se espera un solo parámetro (el texto traducido), el método <code>alert()</code> será usado para mostrar dicha traducción.</p>
+<p>Figura 7 : Manejando la respuesta</p>
+<pre class="eval"><strong>JavaScript:</strong>
+ if(translation.fault){
+ // error returned from the web service
+ alert(translation.fault.faultString);
+ } else {
+ // we expect only one return SOAPParameter - the translated string.
+ var response = new Array();
+ response = translation.getParameters(false, {});
+ alert("Translation: " + response[0].value);
+ }
+</pre>
+<p>Como se dijo en la introducción, las llamadas SOAP obedecen la política de acceso multidominio en los scripts.</p>
+<p>Existen dos formas de rodear la política de seguridad para hacer pruebas:</p>
+<dl>
+ <dd>
+  </dd>
+</dl>
+<ol>
+ <li>
+ <p>Ejecuta el script en el disco local.</p>
+ <p>Guarda el código localmente en tu disco duro.</p>
+ <p>El modelo de seguridad multidomino no afecta al código ejecutado desde el disco duro local.</p>
+ </li>
+ <li>
+ <p>Habilita el acceso multidominio</p>
+ <p>Se puede saltar la comprobación multidominio estableciendo una opción como se explica en el artículo <a href="es/Bypassing_Security_Restrictions_and_Signing_Code">Bypassing Security Restrictions and Signing Code</a> y añadiéndolo al comando JavaScript para decirle a la petición que ignore la comprobación multidominio.</p>
+ <p>Tras sortear la comprobación, ejecuta el navegador y carga esta <a class="external" href="http://developer.mozilla.org/samples/soap/example-crossdomain.html">página con el ejemplo modificado</a>. Te preguntará (mediante un cuadro de diálogo) los permisos para desactivar el multidominio (para esa sesión) para la función generadora de la llamada SOAP. El único cambio realizado ha sido añadir <code>netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");</code> a la función que genera la llamada SOAP.</p>
+ </li>
+</ol>
+<p>Figura 8 : Código final - <a class="external" href="http://developer.mozilla.org/samples/soap/example.html">Ejemplo local</a>, <a class="external" href="http://developer.mozilla.org/samples/soap/example-crossdomain.html">Ejemplo multidominio</a></p>
+<pre class="eval"><strong>JavaScript:</strong>
+ var babelFishCall = new SOAPCall();
+ babelFishCall.transportURI = "<span class="nowiki">http://services.xmethods.net:80/perl/soaplite.cgi</span>";
+
+ // SOAP params
+ var param1 = new SOAPParameter();
+ param1.value = "en_fr";
+ param1.name = "translationmode";
+
+ var param2 = new SOAPParameter();
+ param2.value = "I am";
+ param2.name = "sourcedate";
+
+ // combine the 2 params into an array
+ var myParamArray = [param1,param2];
+
+ babelFishCall.encode(0, "BabelFish", "urn:xmethodsBabelFish", 0, null, myParamArray.length, myParamArray);
+
+ var translation = babelFishCall.invoke();
+
+ if(translation.fault){
+ // error returned from the web service
+ alert(translation.fault.faultString);
+ } else {
+ // we expect only one return SOAPParameter - the translated string.
+ var response = new Array();
+ response = translation.getParameters(false, {});
+ alert("Translation: " + response[0].value);
+ }
+</pre>
+<h3 id="Tras_la_pista_del_contenedor_Soap" name="Tras_la_pista_del_contenedor_Soap">Tras la pista del contenedor Soap</h3>
+<p>Aquí se muestra un volcado HTTP (usando la aplicación multiplataforma <a class="external" href="http://www.ethereal.com/">Ethereal</a>) de lo que realmente se envía y se recibe cuando se ejecuta el ejemplo:</p>
+<p>Figura 9 : Volcado HTTP</p>
+<pre class="eval"><strong>Sent:</strong>
+POST /perl/soaplite.cgi HTTP/1.1
+Host: services.xmethods.net:80
+...
+Content-Type: text/xml
+Content-Length: 516
+
+&lt;env:Envelope xmlns:env="<span class="nowiki">http://schemas.xmlsoap.org/soap/envelope/</span>"
+ xmlns:enc="<span class="nowiki">http://schemas.xmlsoap.org/soap/encoding/</span>"
+ env:encodingStyle="<span class="nowiki">http://schemas.xmlsoap.org/soap/encoding/</span>"
+ xmlns:xs="<span class="nowiki">http://www.w3.org/1999/XMLSchema</span>"
+ xmlns:xsi="<span class="nowiki">http://www.w3.org/1999/XMLSchema-instance</span>"&gt;
+ &lt;env:Header/&gt;
+ &lt;env:Body&gt;
+ &lt;a0:BabelFish xmlns:a0="<span style="color: green;">urn:xmethodsBabelFish</span>"&gt;
+ <span style="color: green;">&lt;a0:translationmode xsi:type="xs:string"&gt;en_fr&lt;/a0:translationmode&gt;</span>
+ <span style="color: green;">&lt;a0:sourcedata xsi:type="xs:string"&gt;I am&lt;/a0:sourcedata&gt;</span>
+ &lt;/a0:BabelFish&gt;
+ &lt;/env:Body&gt;
+&lt;/env:Envelope&gt;
+
+
+<strong>Recieved:</strong>
+HTTP/1.1 200 OK
+Date: Tue, 11 Mar 2003 20:28:11 GMT
+Server: Apache/1.3&amp; (Unix) Enhydra-Director/3 PHP/4.0.6 DAV/1.0.3 AuthNuSphere/1.0.0
+SOAPServer: SOAP::Lite/Perl/0.52
+Content-Length: 532
+
+...
+Content-Type: text/xml; charset=utf-8
+
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;SOAP-ENV:Envelope xmlns:SOAP-ENC="<span class="nowiki">http://schemas.xmlsoap.org/soap/encoding/</span>"
+ SOAP-ENV:encodingStyle="<span class="nowiki">http://schemas.xmlsoap.org/soap/encoding/</span>"
+ xmlns:SOAP-ENV="<span class="nowiki">http://schemas.xmlsoap.org/soap/envelope/</span>"
+ xmlns:xsi="<span class="nowiki">http://www.w3.org/1999/XMLSchema-instance</span>"
+ xmlns:xsd="<span class="nowiki">http://www.w3.org/1999/XMLSchema</span>"&gt;
+ &lt;SOAP-ENV:Body&gt;
+ &lt;namesp1:BabelFishResponse xmlns:namesp1="urn:xmethodsBabelFish"&gt;
+ <span style="color: green;">&lt;return xsi:type="xsd:string"&gt;je suis&lt;/return&gt;</span>
+ &lt;/namesp1:BabelFishResponse&gt;
+ &lt;/SOAP-ENV:Body&gt;
+&lt;/SOAP-ENV:Envelope&gt;
+</pre>
+<h3 id="Recursos" name="Recursos">Recursos</h3>
+<p><a class="external" href="http://lxr.mozilla.org/mozilla/source/extensions/webservices/docs/Soap_Scripts_in_Mozilla.html">SOAP Scripts in Mozilla</a> por Ray Whitmer<br>
+ <a class="external" href="http://www.oreillynet.com/lpt/a/2677">Using the Mozilla SOAP API</a> por Scott Andrew LePera and Apple Developer Connection.<br>
+ <a class="external" href="http://www.w3.org/TR/soap12-part1/">The Latest w3.org SOAP Specification</a><br>
+ <a class="external" href="http://www.onlamp.com/lpt/a/5981">Calling SOAP Servers from JS in Mozilla</a> OnLamp.com article by Zachary Kessin<br>
+ <a class="external" href="http://www.xulplanet.com/references/objref/SOAPCall.html">SOAPCall documentation on XULPlanet.com</a><br>
+ <a class="external" href="http://www.xulplanet.com/references/objref/SOAPResponse.html">SOAPResponse documentation on XULPlanet.com</a></p>
+<div class="originaldocinfo">
+ <h3 id="Informaci.C3.B3n_del_documento_original" name="Informaci.C3.B3n_del_documento_original">Información del documento original</h3>
+ <ul>
+ <li>Author(s): Doron Rosenberg</li>
+ <li>Published: March 14, 2003</li>
+ <li>Copyright Information: Copyright © 2001-2003 Netscape.</li>
+ <li>Original Location: <a class="external" href="http://devedge-temp.mozilla.org/viewsource/2003/soap/01/index_en.html" rel="freelink">http://devedge-temp.mozilla.org/view.../index_en.html</a></li>
+ <li>Note: This reprinted article was originally part of the DevEdge site.</li>
+ </ul>
+</div>
+<p> </p>