aboutsummaryrefslogtreecommitdiff
path: root/files/es/archive/add-ons
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 21:46:22 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 21:46:22 -0500
commita065e04d529da1d847b5062a12c46d916408bf32 (patch)
treefe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/es/archive/add-ons
parent218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff)
downloadtranslated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz
translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2
translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/es/archive/add-ons')
-rw-r--r--files/es/archive/add-ons/api_de_restauración_de_sesión/index.html66
-rw-r--r--files/es/archive/add-ons/index.html8
-rw-r--r--files/es/archive/add-ons/observer_notifications/index.html155
-rw-r--r--files/es/archive/add-ons/permitir_sugerencias_en_los_plugins_de_búsqueda/index.html54
-rw-r--r--files/es/archive/add-ons/versionado,_actualización_y_compatibilidad_de_extensiones/index.html295
5 files changed, 0 insertions, 578 deletions
diff --git a/files/es/archive/add-ons/api_de_restauración_de_sesión/index.html b/files/es/archive/add-ons/api_de_restauración_de_sesión/index.html
deleted file mode 100644
index 237857bc2e..0000000000
--- a/files/es/archive/add-ons/api_de_restauración_de_sesión/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: API de restauración de sesión
-slug: Archive/Add-ons/API_de_restauración_de_sesión
-tags:
- - Complementos
- - NecesitaRevisiónTécnica
- - Todas_las_Categorías
- - extensiones
-translation_of: Archive/Add-ons/Session_store_API
----
-<p><a href="/es/Firefox_2_para_desarrolladores" title="es/Firefox_2_para_desarrolladores">Firefox 2</a> introduce el almacenamiento de sesiones, una nueva caracteristica que hace posible que las <a href="/es/Extensiones" title="es/Extensiones">extensiones</a> puedan fácilmente, guardar y restaurar datos a lo largo de sesiones de Firefox. Existe una API simple que permite que las extensiones accedan a la caracterìstica de almacenamiento de sesión.</p>
-<p>Un escenario clave en el cual proveer esta caracteristica puede ser crucial para una extensión: Firefox 2 deja revertir el cerrado de pestañas. Para poder restaurar correctamente el estado de la extension cuando una pestaña es restaurada, necesita usar el metodo <code>setTabValue()</code> de la API de almacenamiento de sesion, para guardar la informaciòn que necesitarà para restaurar su estado, y luego invocar <code>getTabValue()</code> para obtener la configuraciòn previa cuando la pestaña es recuperada.</p>
-<p>La API Almacenamiento de Sesion es implementada usando la interfaz <code><a href="/es/NsISessionStore" title="es/NsISessionStore">nsISessionStore</a></code></p>
-<h2 id="Sabiendo_cuando_restaurar" name="Sabiendo_cuando_restaurar">Saber cuando restaurar</h2>
-<p>Cada vez que Firefox està por restaurar una pestaña, un evento de tipo <code>SSTabRestoring</code> es enviado. Si se quiere que la extensión sea capaz de restaurar los datos cuando las pestañas son restauradas, puede instalar un "centinela" como este:</p>
-<pre>function myExtensionHandleRestore(aEvent) {
- Components.classes["@mozilla.org/consoleservice;1"].
- getService(Components.interfaces.nsIConsoleService).
- logStringMessage("restoring tabs");
-};
-
-document.addEventListener("SSTabRestoring", myExtensionHandleRestore, false);
-</pre>
-<p>Simplemente se debe reemplazar los contenidos de la función <code>myExtensionHandleRestore()</code> con cualquier cosa que se necesite hacer cuando la pestaña sea restaurada. En este ejemplo, <code><a href="/es/NsIConsoleService" title="es/NsIConsoleService">nsIConsoleService</a></code> es usado para desplegar un mensaje a la <a href="/es/JavaScript_Console" title="es/JavaScript_Console">Consola</a>.</p>
-<p>Este evento es enviado justo antes de la restauracion de una pestaña. Un evento del tipo <code>SSTabRestored</code> es enviado después que la última pestaña ha sido restaurada.</p>
-<h2 id="El_proceso_de_restauraci.C3.B3n_de_sesi.C3.B3n" name="El_proceso_de_restauraci.C3.B3n_de_sesi.C3.B3n">El proceso de restauración de sesión</h2>
-<p>La secuencia exacta de eventos que ocurre cuando una sesión està siendo restaurada es:</p>
-<ol> <li>El estado de una sesión está a punto de ser restaurado. Esto puede ser al inicio del programa,o en respuesta a Deshacer Cerrar Pestaña, dado que las pestañas cerradas son restauradas como sesiones de una sola pestaña.</li> <li>Nuevas ventanas son abiertas como se requirieron (una por cada ventana que fue salvada durante el almacenamiento de sesión), y tanto cookies como la lista de pestañas recièn cerradas son restauradas.</li>
-</ol>
-<p>Después de esto, los siguientes pasos son seguidos por cada pestaña que està siendo restaurada:</p>
-<ol> <li>Se reutiliza una pestaña o se crea una nueva. En el último caso, el evento <code>TabOpen</code> es enviado.</li> <li>Los atributos persistentes XUL de la pestaña (aquellos que fueron salvados, debido a invocaciones de <code><a href="/es/NsISessionStore#persistTabAttribute.28.29" title="es/NsISessionStore#persistTabAttribute.28.29">persistTabAttribute()</a></code>) y permisos son restaurados.</li> <li>El evento <code>SSTabRestoring</code> es enviado.</li> <li>Se le ordena a la pestaña que cargue el URL que deberìa desplegar.</li> <li>Cuando la página ha terminado de cargar, los campos de texto y barras de desplazamiento son restaurados.</li> <li>Finalmente, el evento <code>SSTabRestored</code> es enviado.</li>
-</ol>
-<p>Si se quiere configurar permisos o manipular de alguna otra forma  una pestaña restaurada antes de que la página sea cargada, debería observar <code>SSTabRestoring</code>. Si se desea hacer algo después de que la pagina ha sido cargada, debería observar <code>SSTabRestored</code>.</p>
-<p>Ambos eventos son siempre enviados por cada pestaña que està siendo restaurada. Se puede determinar cual pestaña esta siendo restaurada mirando el campo <code>originalTarget</code> del evento.</p>
-<p>No existe una forma para determinar cuàndo ha sido restaurada la última pestaña, a menos que se determine cuantas pestañas necesitan ser restauradas y luego contar los eventos s<code>STabRestored.</code></p>
-<h2 id="Usando_la_API_de_almacenamiento_de_sesi.C3.B3n" name="Usando_la_API_de_almacenamiento_de_sesi.C3.B3n">Usando la API de almacenamiento de sesión</h2>
-<p>Esta sección provee algunos ejemplos de còmo usar la API de almacenamiento de sesión.</p>
-<h3 id="Guardando_un_valor_con_una_pesta.C3.B1a" name="Guardando_un_valor_con_una_pesta.C3.B1a">Guardando un valor con una pestaña.</h3>
-<p>El siguiente código adherirà un par llave/valor a una pestaña, asi-cuando èsta sea restaurada-, este par todavía estará asociada a ella.</p>
-<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
- getService(Components.interfaces.nsISessionStore);
- var currentTab = getBrowser().selectedTab;
- var dataToAttach = "Yo quiero adherir esto";
- ss.setTabValue(currentTab, "nombre-llave-aqui", dataToAttach);
-</pre>
-<p>El código asigna el valor de la llave "nombre-llave-aqui" a <var>dataToAttach</var>. Se puede usar cualquier objeto JavaScript como datos.</p>
-<h3 id="Recuperar_un_valor_guardado" name="Recuperar_un_valor_guardado">Recuperar un valor guardado</h3>
-<p>Se puede recuperar un valor asociado a una pestaña en cualquier momento (ya sea mientras la pestaña este siendo restaurada o no), usando un código similar al siguiente:</p>
-<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
- getService(Components.interfaces.nsISessionStore);
- var currentTab = getBrowser().selectedTab;
- var retrievedData = ss.getTabValue(currentTab, "nombre-llave-aqui");
-</pre>
-<p>Despuès  que el código ha sido ejecutado, la variable <var>retrievedData</var> contiene el valor guardado en la llave "nombre-llave-aqui". <var>retrievedData</var> está indefinida si no existe un valor guardado para ese nombre de llave.</p>
-<h3 id="Borrando_un_valor_asociado_a_una_pesta.C3.B1a" name="Borrando_un_valor_asociado_a_una_pesta.C3.B1a">Borrando un valor asociado a una pestaña</h3>
-<p>Para borrar un valor de una pestaña, se puede utilizar un código como el siguiente:</p>
-<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"].
- getService(Components.interfaces.nsISessionStore);
- var currentTab = getBrowser().selectedTab;
- deleteTabValue(currentTab, "nombre-llave-aqui");
-</pre>
-<h3 id="Comentarios" name="Comentarios">Comentarios</h3>
-<p>El guardado de valores de la ventana y las funciones de restauración, funcionan exactamente como las funciones basadas en pestañas con nombres similares.</p>
-<h2 id="Ver_Tambi.C3.A9n" name="Ver_Tambi.C3.A9n">Ver También:</h2>
-<p><a href="/es/NsISessionStore" title="es/NsISessionStore">nsISessionStore</a></p>
-<p></p>
diff --git a/files/es/archive/add-ons/index.html b/files/es/archive/add-ons/index.html
deleted file mode 100644
index d1851bd7ee..0000000000
--- a/files/es/archive/add-ons/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Add-ons
-slug: Archive/Add-ons
-translation_of: Archive/Add-ons
----
-<p>In progress. Archived add-ons documentation.</p>
-
-<p></p>
diff --git a/files/es/archive/add-ons/observer_notifications/index.html b/files/es/archive/add-ons/observer_notifications/index.html
deleted file mode 100644
index 571cebc9d4..0000000000
--- a/files/es/archive/add-ons/observer_notifications/index.html
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: Notificaciones Observer
-slug: Archive/Add-ons/Observer_Notifications
-translation_of: Mozilla/Tech/XPCOM/Observer_Notifications
----
-<p></p><div style="text-align: right;" class="prevnext">
- <p><a style="float: left;" href="/es/docs/Escuela_XUL/Objetos_XPCOM">« Anterior</a><a href="/es/docs/Escuela_XUL/Manejo_de_preferencias">Siguiente »</a></p>
-</div><p></p>
-
-<p>Sometimes you need your code to send a message to other parts of your code. For example, you might want to notify that a task is completed, and then several different actions must be performed. You could do that by calling all those functions directly, but XPCOM offers you a better and cleaner way to achieve that using observers and the observer service.</p>
-
-<p>An observer is an object that is responsible to observe (wait for) notifications and then to carry out subsequent actions. To create an observer, you need to implement the <a href="/en/XPCOM_Interface_Reference/nsIObserver" title="en/nsIObserver">nsIObserver</a> interface. The interface has only one method observe() which takes three parameters. The first parameter (subject) can be any XPCOM object, the second parameter is a notification topic, and the final parameter is a string that further describes the notification.</p>
-
-<p>This example code shows you what an implementation of the nsIObserver interface looks like:</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">let testObserver = {
- observe : function(aSubject, aTopic, aData) {
- if (aTopic == "xulschoolhello-test-topic") {
- window.alert("Data received: " + aData);
- }
- }
-}</pre>
-</div>
-</div>
-
-<p>In order for this observer to work, you need to use the <a href="/en/XPCOM_Interface_Reference/nsIObserverService" title="en/XPCOM Interface Reference/nsIObserverService">observer service</a> that provides methods for you to add, remove, notify and enumerate observers.</p>
-
-<p>Adding an observer to the observer service is simple, invoking the <a href="/en/XPCOM_Interface_Reference/nsIObserverService/addObserver" title="en/XPCOM Interface Reference/nsIObserverService/addObserver">addObserver</a> method with three parameters. The first parameter is an observer object, the second parameter is a notification topic, and the third parameter is a boolean which indicates whether the observer service should hold a weak reference to the observer. You should normally set the third parameter to <em>false</em>.</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">let observerService = Components.classes["@mozilla.org/observer-service;1"].
-    getService(Components.interfaces.nsIObserverService);
-
-observerService.addObserver(testObserver, "xulschoolhello-test-topic", false);</pre>
-</div>
-</div>
-
-<div style="border-width: 1px;" class="panel">
-<div class="panelContent">
-<div class="note">You should come up with a notification topic that is unique so you know it will not conflict with Firefox or other extensions topics.</div>
-</div>
-</div>
-
-<p>To remove an observer for a specific topic, you use the <a href="/en/XPCOM_Interface_Reference/nsIObserverService/removeObserver" title="en/XPCOM Interface Reference/nsIObserverService/removeObserver">removeObserver</a> method. The method takes the observer object and notification topic as parameters.</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">observerService.removeObserver(testObserver, "xulschoolhello-test-topic");</pre>
-</div>
-</div>
-
-<p>After you have registered some observers to listen to a notification topic, you can then use the <a href="/en/XPCOM_Interface_Reference/nsIObserverService/notifyObservers" title="en/XPCOM Interface Reference/nsIObserverService/notifyObservers">notifyObservers</a> method to send a notification to all of them. The method takes three parameters. The first parameter can be any XPCOM object to pass to those observers (can be null), the second parameter is the notification topic and the last parameter is an additional string to pass to those observers (can be null).</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">observerService.notifyObservers(null, "xulschoolhello-test-topic", "hello");</pre>
-</div>
-</div>
-
-<h2 id="Non-chrome_to_chrome_communication">Non-chrome to chrome communication</h2>
-
-<p>Non-chrome to chrome communication is one of the main uses of observers. By non-chrome we mean JavaScript Code Modules or XPCOM. As we saw in previous sections, you can use JavaScript Code Module and XPCOM objects very easily from the chrome. But given that chrome is window-dependent and non-chrome objects are not, it's tricky to send a message to the chrome. You would have to invoke a method for the chrome objects in all windows. It's much easier to use observers in this case.</p>
-
-<p>Let's see the following example code on how to send out a notification from non-chrome code.</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">/**
- * Notifies all the registered observers with the test notification topic.
- */
-notifyTest : function() {
- let observerService = Components.classes["@mozilla.org/observer-service;1"].
- getService(Components.interfaces.nsIObserverService);
- let subject = Components.classes["@mozilla.org/supports-string;1"].
- createInstance(Components.interfaces.nsISupportsString);
-
- // assign some text to data attribute
- subject.data = "This is a test.";
- // notify all registered observers
- observerService.notifyObservers(
- subject, "xulschoolhello-test-topic", "hello");
-}</pre>
-</div>
-</div>
-
-<p>In the <em>notifyTest</em> method, the <em>notifyObservers</em> call is used to notify all registered observers about the notification topic "xs-hw-test-topic". The input parameter is an instance of <em>nsISupportsString</em> with some text and the last input parameter is a string "Hello".</p>
-
-<p>In a chrome browser overlay file, we register an observer to listen to the notification topic "xs-hw-test-topic" when the window loads. Keep in mind that <strong>you have to remove observers that are not longer needed</strong>. Not doing so will result in memory leaks. Therefore, the registered observer is unregistered when the browser window is unloaded.</p>
-
-<div style="border-width: 1px;" class="code panel">
-<div class="codeContent panelContent">
-<pre class="brush: js">/**
- * Controls the browser overlay for the Hello World extension.
- */
-XULSchoolChrome.BrowserOverlay = {
- /* Observer service. */
- _observerService : null,
-
- /**
- * Initializes this object.
- */
- init : function() {
- this._observerService = Components.classes["@mozilla.org/observer-service;1"].
-       getService(Components.interfaces.nsIObserverService);
- this._observerService.addObserver(this, "xulschoolhello-test-topic", false);
- },
-
- /**
- * Unitializes this object.
- */
- uninit : function() {
- this._observerService.removeObserver(
- this, "xulschoolhello-test-topic");
- },
-
- /**
- * Observes the registered notification topics.
- * @param aSubject The nsISupports object associated with the notification.
- * @param aTopic The notification topic.
- * @param aData The additional string associated with the notification.
- */
- observe : function(aSubject, aTopic, aData) {
- if (aTopic == "xulschoolhello-test-topic") {
- aSubject.QueryInterface(Ci.nsISupportsString);
- window.alert("Subject: " + aSubject.data); // =&gt; "This is a test"
- window.alert("Data: " + aData); // =&gt; "Hello"
- }
- }
-}
-
-window.addEventListener(
- "load", function() { XULSchoolChrome.BrowserOverlay.init(); }, false);
-window.addEventListener(
- "unload", function() { XULSchoolChrome.BrowserOverlay.uninit(); }, false);</pre>
-</div>
-</div>
-
-<p>In the <em>observe</em> method the notification topic is verified because you can have one observer listening to several topics. You may notice that we explicitly set the interface of the <em>aSubject</em> object to <em>nsISupportsString</em> using the <em>QueryInterface</em> method. This is because the first parameter of the <em>observe</em> method is typed as <em>nsISupports </em>(the generic interface, as seen before), therefore its properties and methods cannot be accessed unless the correct interface is set to it.</p>
-
-<p>When the <em>notifyTest</em> method is called, all observers registered with <em>xulschoolhello-test-topic</em> will get notified and display two alerts. If there are 2 Firefox windows open, the observer will be notified in both and the alerts will show up on both.</p>
-
-<p>You can always listen for multiple notification topics using the same observer. Also, be careful not to add the same observer to a notification topic more than once, otherwise the same code in the observer will be run several times when a notification is sent.</p>
-
-<h2 id="Useful_Firefox_notifications">Useful Firefox notifications</h2>
-
-<p>We have covered sending and receiving custom notification topics using observers and the observer service. In Firefox, there are many built-in observer topics that you can observe as well. The <a href="/en/Observer_Notifications" title="en/Observer Notifications">Observer Notifications</a> page lists some useful topics and is definitely worth spending time studying it.</p>
-
-<p></p><div style="text-align: right;" class="prevnext">
- <p><a style="float: left;" href="/es/docs/Escuela_XUL/Objetos_XPCOM">« Anterior</a><a href="/es/docs/Escuela_XUL/Manejo_de_preferencias">Siguiente »</a></p>
-</div><p></p>
-
-<p><span style="font-size: small;">This tutorial was kindly donated to Mozilla by Appcoast.</span></p>
diff --git a/files/es/archive/add-ons/permitir_sugerencias_en_los_plugins_de_búsqueda/index.html b/files/es/archive/add-ons/permitir_sugerencias_en_los_plugins_de_búsqueda/index.html
deleted file mode 100644
index 7e5d1f33de..0000000000
--- a/files/es/archive/add-ons/permitir_sugerencias_en_los_plugins_de_búsqueda/index.html
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Permitir sugerencias en los plugins de búsqueda
-slug: Archive/Add-ons/Permitir_sugerencias_en_los_plugins_de_búsqueda
-tags:
- - Plugins_de_búsqueda
-translation_of: Archive/Add-ons/Supporting_search_suggestions_in_search_plugins
----
-<p>MozSearch admite sugerencias mientras el usuario escribe el la barra de búsqueda, <a href="es/Firefox_2">Firefox 2</a> pregunta a la URL especificada por el plugins del motor de búsqueda para devolver sugerencias en tiempo real.
-</p><p>Una vez que se ha obtenido la lista, se muestra en un cuadro emergente que aparece debajo de la barra de búsqueda, que permite al usuario seleccionar un término sugerido. Si el usuario continua escribiendo, se solicita una nueva lista de sugerencias al motor de búsqueda, y se muestra actualizada.
-</p><p>Los plugins de Yahoo y Google incluidos en Firefox 2 admiten sugerencias de búsqueda.
-</p>
-<h2 id="Implementar_soporte_para_sugerencias_en_un_plugin_de_b.C3.BAsqueda" name="Implementar_soporte_para_sugerencias_en_un_plugin_de_b.C3.BAsqueda">Implementar soporte para sugerencias en un plugin de búsqueda</h2>
-<p>Para soportar sugerencias, un plugin de búsquedaa necesita definir un elemento extra <code>&lt;Url&gt;</code> con su atributo <code>type</code> definido como <code>"application/x-suggestions+json"</code>. (esto significa que los plugins con soporte para sugerencias tendrán dos elementos <code>&lt;Url&gt;</code>, siendo el otro la URL principal <code>text/html</code>.)
-</p><p>Por ejemplo, el plugin de búsqueda de Yahoo tiene esta <code>&lt;Url&gt;</code>:
-</p>
-<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}"/&gt;
-</pre>
-<p>Si el usuario escribe "fir" en la barra de búsqueda, y se detiene, Firefox insertará "fir" en el lugar de <code>{searchTerms}</code> y consultará esa URL:
-</p>
-<pre>&lt;Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command=fir"/&gt;
-</pre>
-<p>Los resultados son usados para construir el diálogo con la lista de sugerencias.
-</p><p>Lee <a href="es/Creaci%c3%b3n_de_plugins_MozSearch">Creación de plugins MozSearch</a> para conocer mas sobre como implementar un plugin de búsqueda.
-</p>
-<h2 id="Implementar_las_sugerencias_en_el_servidor" name="Implementar_las_sugerencias_en_el_servidor">Implementar las sugerencias en el servidor</h2>
-<p>La mayor parte del trabajo para manipular las sugerencias de búsqueda es realmente implementada en el lado del servidor. Si eres desarrollador web, y quieres soportar las sugerencias de búsqueda, necesitas implementar el soporte para devolver las sugerencias en <a class="external" href="http://www.json.org/">JavaScript Object Notation</a> (JSON) dado un termino de búsqueda.
-</p><p>Cuando el navegador desea obtener posibles resultados de un término de búsqueda, envia una solicitud HTTP GET a la URL especificada por el elemento <code>&lt;Url&gt;</code>.
-</p><p>Tu servidor debe entonces decidir que sugerencias debe ofrecer usando los medios que vea necesarios, y construyedo un JSON que consista en al menos dos, y como mucho cuatro, elementos:
-</p>
-<dl><dt> <b>query string</b>
-</dt><dd> El primer elemento en el JSON es la cadena de búsqueda original. Esto permite a Firefox verificar que la sugerencia concuerda con el término de búsqueda actual.
-</dd></dl>
-<dl><dt> <b>completion list</b>
-</dt><dd> Un array de los términos sugeridos. El array debe estar entre corchetes. Por ejemplo: &lt;tt&gt;["termino 1", "termino 2", "termino 3", "termino 4"]&lt;/tt&gt;
-</dd></dl>
-<dl><dt> <b>descriptions</b>
-</dt><dd> Este elemento opcional es un array de descripciones de cada sugerencia en la <i>completion list</i>. Esto puede ser cualquier información que el motor de búsqueda quiera devolver para que se muestre en el navegador, como el numero de resultados disponibles para dicha búsqueda.
-</dd></dl>
-<div class="note">Las descripciones no son soportadas en Firefox 2, y son ignoradas si alguna es espeficificada.</div>
-<dl><dt> <b>query URLs</b>
-</dt><dd> Este elemento opcional es un array de URLs alternativas para cada sugerencia de la <i>completion list</i>. Por ejemplo, si quieres ofrecer un enlace a un mapa en vez de simplemente un resultado de búsqueda para una sugerencia, puedes devolver una URL a un mapa en este array.
-</dd></dl>
-<dl><dd> Si no especificas una URL para la petición, la petición por defecto se manda por defecto al elemento <code>&lt;Url&gt;</code> definido en la descripción XML del plugin.
-</dd></dl>
-<div class="note">Las query URLs no son soportadas en Firefox 2, y son ignoradas.</div>
-<p>Por ejemplo, si el término a buscar es "fir", y no necesitas devolver descripciones o urls alternativas, puedes devolver el siguiente JSON:
-</p>
-<pre class="eval">["fir", ["firefox", "first choice", "mozilla firefox"]]
-</pre>
-<p>Date cuenta que en este ejemplo, solo se especifican la <i>query string</i> y el <i>completion array</i>, sin especificar los elementos opcionales.
-</p><p>Tu <i>completion list</i> puede incluir tantas sugerencias como quieras, aunque debe mantenerse manejable, dado que los datos se estarán actualizando en tiempo real mientras el usuario está escribiendo una palabra. Además, el método que usas para elegir las sugerencias depende de ti.
-</p>
-<div class="noinclude">
-</div>
diff --git a/files/es/archive/add-ons/versionado,_actualización_y_compatibilidad_de_extensiones/index.html b/files/es/archive/add-ons/versionado,_actualización_y_compatibilidad_de_extensiones/index.html
deleted file mode 100644
index 45a3a213ca..0000000000
--- a/files/es/archive/add-ons/versionado,_actualización_y_compatibilidad_de_extensiones/index.html
+++ /dev/null
@@ -1,295 +0,0 @@
----
-title: 'Versionado, actualización y compatibilidad de extensiones'
-slug: 'Archive/Add-ons/Versionado,_actualización_y_compatibilidad_de_extensiones'
-tags:
- - Complementos
- - Todas_las_Categorías
- - extensiones
- - páginas_a_traducir
-translation_of: 'Archive/Add-ons/Extension_Versioning,_Update_and_Compatibility'
----
-<h2 id="Las_versiones_de_extensiones">Las versiones de extensiones</h2>
-
-<p>Las extensiones deberán especificar su versión utilizando la <a href="/es/Formato_para_la_versi%C3%B3n_del_Toolkit" title="es/Formato_para_la_versión_del_Toolkit">herramienta para el formato de versión</a>. En general son unas cadenas de caracteres cortadas por un punto, algunos ejemplos:</p>
-
-<ul>
- <li>2.0</li>
- <li>1.0b1</li>
- <li>3.0pre1</li>
- <li>5.0.1.2</li>
-</ul>
-
-<h2 id="Como_determinan_la_compatibilidad_las_aplicaciones" name="Como_determinan_la_compatibilidad_las_aplicaciones">Como determinan la compatibilidad las aplicaciones</h2>
-
-<p>Al instalar extensiones/complementos las aplicaciones (programas) comprueban las entradas <code><a href="/es/Install.rdf#targetApplication" title="es/Install.rdf#targetApplication">targetApplication</a></code> en el archivo de instalación (<code>install.rdf</code>) de la extensión. La identificación (ID) de una entrada debe coincidir con la ID de la aplicación. Además, el número de versión de la aplicación debe encontrarse dentro del rango definido en <code>minVersion</code> y <code>maxVersion</code>.</p>
-
-<p>Si la aplicación tiene una entrada <code>targetApplication</code> pero es para una versión incompatible, la aplicación intentará obtendrá información actualizada sobre su compatibilidad del archivo <code><a href="/es/Install.rdf#updateURL" title="es/Install.rdf#updateURL">updateURL</a></code>.</p>
-
-<p>Si el archivo de instalación tiene entradas en <code><a href="/es/Install.rdf#targetPlatform" title="es/Install.rdf#targetPlatform">targetPlatform</a></code>, la plataforma utilizada para instalar la aplicación debe aparecer listada en ella o se cancelará la instalación.</p>
-
-<p> En las aplicaciones basadas en Gecko 1.9 se puede utilizar una entrada <code>targetApplication</code> con una ID <code><a class="link-mailto" href="mailto:toolkit@mozilla.org" rel="freelink">toolkit@mozilla.org</a></code>; <code>minVersion</code>, y <code>maxVersion</code> que coincidan con la versión de la aplicación. Esto permitirá garantizar que la extensión se podrá instalar en cualquier aplicación basada en Toolkit.</p>
-
-<h3 id="Cancelar_el_control_de_compatibilidad" name="Cancelar_el_control_de_compatibilidad">Cancelar el control de compatibilidad</h3>
-
-<p> Para la evaluación de extensiones se puede hacer que la aplicación ignore los controles de compatibilidad durante la instalación. Lo único que hay que hacer es crear la preferencia <code>extensions.checkCompatibility</code> y darle valor False.</p>
-
-<p>Antes de la versión 1.5 de Firefox, se podía utilizar la preferencia <code>app.extensions.version</code> para que la aplicación ignorase su versión e instalar así extensiones de otra forma incompatibles.</p>
-
-<h2 id="Elecci.C3.B3n_de_minVersion_y_maxVersion" name="Elecci.C3.B3n_de_minVersion_y_maxVersion">Elección de minVersion y maxVersion</h2>
-
-<p><code>minVersion</code> y <code>maxVersion</code> deberían especificar las diferentes versiones de la aplicación que se han probado. No se debe introducir un valor <code>maxVersion</code> superior a la versión disponible ya que no se saben qué cambios podrían introducirse en su interfaz de programación (API) y de usuario. Con la <a href="#Actualizaciones_de_compatibilidad">actualización de compatibilidad</a> no hace falta publicar una versión nueva completa de la extensión, sólo habrá que aumentar su <code>maxVersion</code>.</p>
-
-<p>Generalmente, en <code>maxVersion</code> es permitido sustituir el número de versión secundario de la aplicación por un asterisco '*', por ejemplo: <code>2.0.0.*</code> significaría que admite cualquier actualización secundaria de la versión 2 de la aplicación. Normalmente, la aplicación suele sugerir al autor de extensiones con qué parte de la versión conviene más hacer lo antedicho.</p>
-
-<p>El asterisco '*' no representa una versión por sí mismo. En realidad el * representa un número infinitamente alto, por lo que es más sensato usarlo en <code>maxVersion</code> que en <code>minVersion</code> ya que no suele producir el efecto deseado.</p>
-
-<h2 id="Comprobaci.C3.B3n_autom.C3.A1tica_de_actualizaci.C3.B3n_de_extensiones" name="Comprobaci.C3.B3n_autom.C3.A1tica_de_actualizaci.C3.B3n_de_extensiones">Comprobación automática de actualización de extensiones</h2>
-
-<p>Periódicamente, las aplicaciones buscarán actualizaciones de las extensiones instaladas recuperando el archivo <code><a href="/es/Install.rdf#updateURL" title="es/Install.rdf#updateURL">updateURL</a></code>. La información recuperada puede servir para notificar al usuario que existe una actualización de la extensión e informar a la aplicación de las nuevas versiones compatibles con la extensión.</p>
-
-<h3 id="Actualizaciones_de_compatibilidad" name="Actualizaciones_de_compatibilidad">Actualizaciones de compatibilidad</h3>
-
-<p>Durante la comprobación automática de actualizaciones, las aplicaciones buscan nuevas versiones e información actualizada sobre la compatibilidad de la versión instalada de una extensión. Esto quiere decir que si el manifiesto de la actualización incluye una entrada para la versión actual de la extensión instalada y el <code>targetApplication</code> de la entrada especifica un maxVersion mayor, la aplicación utilizará este valor en lugar del especificado en el archivo <code>install.rdf</code> de la extensión. Esto puede causar que se activen extensiones que estaban desactivadas por ser incompatibles y que se instalen aquellas que normalmente no se instalarían.</p>
-
-<h3 id="Formato_RDF_de_actualizaci.C3.B3n" name="Formato_RDF_de_actualizaci.C3.B3n">Formato RDF de actualización</h3>
-
-<p>Si alberga uno mismo el archivo <code>updateURL</code> del complemento será necesario devolver la información de la versión en un formato RDF. Encontrará un ejemplo de manifiesto de actualización más abajo. Muestra información sobre dos versiones diferentes de la extensión para la 'id' <code><a class="link-mailto" href="mailto:foobar@developer.mozilla.org" rel="freelink">foobar@developer.mozilla.org</a></code>. Las versiones incluidas son 2.2 y 2.5, y cada una especifica la compatibilidad con las versiones de Firefox 1.5 a 2.0.0.*. Para la versión 2.2 se utiliza un enlace de actualización https mientras que para la 2.5 es un enlace regular http con un 'hash' para verificar el archivo recuperado.</p>
-
-<p>Es importante recuperar correctamente la descripción RDF inicial del atributo 'about'. Permite saber de que complemento se trata:</p>
-
-<ul>
- <li>Para una extensión: <code>urn:mozilla:extension:&lt;id&gt;</code></li>
- <li>Para un tema:</li>
-</ul>
-
-<p><code>urn:mozilla:theme:&lt;id&gt;</code></p>
-
-<ul>
- <li>Para cualquier otro tipo de complemento: <code>urn:mozilla:item:&lt;id&gt;</code></li>
-</ul>
-
-<p>En cualquiera de los ejemplos siguientes, la secuencia ordenada de las versiones dentro del elemento &lt;RDF:Seq&gt; es importante, con las versiones más nuevas después que las más antiguas. No hay que escribir todas las versiones intermedias si la última es suministrada.</p>
-
-<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-
-&lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
-
- &lt;!-- Esta forma de descripción incluye toda la
- información de actualización y compatibilidad
- para un simple complemento con la id
- foobar@developer.mozilla.org.
- Un único archivo RDF admite listados con
- información de varios complementos. --&gt;
- &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org"&gt;
- &lt;em:updates&gt;
- &lt;RDF:Seq&gt;
-
- &lt;!-- Cada "li" es una versión diferente
- del mismo complemento --&gt;
- &lt;RDF:li&gt;
- &lt;RDF:Description&gt;
- &lt;em:version&gt;2.2&lt;/em:version&gt; &lt;!-- Esto
- es el número de la versión del complemento --&gt;
-
- &lt;!-- Un targetApplication para cada aplicación
- compatible con el complemento --&gt;
- &lt;em:targetApplication&gt;
- &lt;RDF:Description&gt;
- &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
- &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
- &lt;em:maxVersion&gt;2.0.0.*&lt;/em:maxVersion&gt;
-
- &lt;!-- Dice donde hay que ir para descargar
- esa versión del complemento --&gt;
- &lt;em:updateLink&gt;https://www.mysite.com/foobar2.2.xpi&lt;/em:updateLink&gt;
-
- &lt;!-- Una página sobre lo nuevo
- de esta actualización --&gt;
- &lt;em:updateInfoURL&gt;http://www.mysite.com/updateinfo2.2.xhtml&lt;/em:updateInfoURL&gt;
- &lt;/RDF:Description&gt;
- &lt;/em:targetApplication&gt;
- &lt;/RDF:Description&gt;
- &lt;/RDF:li&gt;
-
- &lt;RDF:li&gt;
- &lt;RDF:Description&gt;
- &lt;em:version&gt;2.5&lt;/em:version&gt;
- &lt;em:targetApplication&gt;
- &lt;RDF:Description&gt;
- &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
- &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
- &lt;em:maxVersion&gt;2.0.0.*&lt;/em:maxVersion&gt;
- &lt;em:updateLink&gt;http://www.mysite.com/foobar2.5.xpi&lt;/em:updateLink&gt;
- &lt;um:updateHash&gt;sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6&lt;/em:updateHash&gt;
- &lt;/RDF:Description&gt;
- &lt;/em:targetApplication&gt;
- &lt;/RDF:Description&gt;
- &lt;/RDF:li&gt;
-
- &lt;/RDF:Seq&gt;
- &lt;/em:updates&gt;
-
- &lt;!-- Una firma sólo es necesaria en el caso de haber
- incluido un 'updateKey' en el archivo de
- instalación 'install.rdf' del complemento. --&gt;
- &lt;em:signature&gt;MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMO1O2gwSCCth1GwYMgscfaNakpN40PJfOWt
- ub2HVdg8+OXMciF8d/9eVWm8eH/IxuxyZlmRZTs3O5tv9eWAY5uBCtqDf1WgTsGk
- jrgZow1fITkZI7w0//C8eKdMLAtGueGfNs2IlTd5P/0KH/hf1rPc1wUqEqKCd4+L
- BcVq13ad&lt;/em:signature&gt;
- &lt;/RDF:Description&gt;
-&lt;/RDF:RDF&gt;
-</pre>
-
-<p>Mucha gente prefiere este formato alternativo (se ha quitado mucha información en este ejemplo para ver mejor la estructura básica):</p>
-
-<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-
-&lt;RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
-
- &lt;!-- Esta forma de descripción incluye toda la
- información de actualización y compatibilidad
- para un simple complemento con la id
- foobar@developer.mozilla.org.
- Un único archivo RDF admite listados con
- información de varios complementos. --&gt;
- &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org"&gt;
- &lt;em:updates&gt;
- &lt;RDF:Seq&gt;
- &lt;!-- El atributo de recurso apunta a una entrada
- de descripción 'about' que está más abajo.
- La uri actual puede ser cualquier cosa --&gt;
- &lt;RDF:li resource="urn:mozilla:extension:foobar@developer.mozilla.org:2.2"/&gt;
- &lt;RDF:li resource="urn:mozilla:extension:foobar@developer.mozilla.org:2.5"/&gt;
- &lt;/RDF:Seq&gt;
- &lt;/em:updates&gt;
- &lt;em:signature&gt;MIGTMA0GCSqGSIb3DQEBBQUAA4GBAMO1O2gwSCCth1GwYMgscfaNakpN40PJfOWt
- ub2HVdg8+OXMciF8d/9eVWm8eH/IxuxyZlmRZTs3O5tv9eWAY5uBCtqDf1WgTsGk
- jrgZow1fITkZI7w0//C8eKdMLAtGueGfNs2IlTd5P/0KH/hf1rPc1wUqEqKCd4+L
- BcVq13ad&lt;/em:signature&gt;
- &lt;/RDF:Description&gt;
-
- &lt;!-- Esto es lo mismo que la descripción con
- 'li' del ejemplo anterior --&gt;
- &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org:2.2"&gt;
- &lt;em:version&gt;2.2&lt;/em:version&gt;
-
- &lt;!-- El contenido de esta parte se ha quitado --&gt;
-
- &lt;/RDF:Description&gt;
- &lt;RDF:Description about="urn:mozilla:extension:foobar@developer.mozilla.org:2.5"&gt;
- &lt;em:version&gt;2.5&lt;/em:version&gt;
-
- &lt;!-- El contenido de esta parte se ha quitado --&gt;
-
- &lt;/RDF:Description&gt;
-&lt;/RDF:RDF&gt;
-</pre>
-
-<h3 id="Facilitar_detalles_sobre_las_actualizaciones" name="Facilitar_detalles_sobre_las_actualizaciones">Facilitar detalles sobre las actualizaciones</h3>
-
-<p></p>
-
-<h4 id="En_general" name="En_general">En general</h4>
-
-<p>Podemos dar a conocer a los usuarios las novedades incluidas en la versión actualizada de nuestro complemento. El usuario al recibir una notificación de que hay una nueva versión puede ver de un vistazo esa información que contiene las mejoras y los arreglos de cualquier problema de seguridad.</p>
-
-<p>Para que así sea, hay que agregar una entrada <code>updateInfoURL</code> en el manifiesto de actualización (ver el ejemplo de encima). La página de esta URL será recuperada y mostrada, al usuario, fuera del contexto normal de una página web por lo cual su contenido es mucho más "limpio", lo que significa que hay muy pocas opciones de formatos y que las secuencias de órdenes e imágenes no están permitidas. Como regla general, sólo se admite el uso de las etiquetas siguientes (cualquier otra cosa se ignorará):</p>
-
-<ul>
- <li>Para cabeceras: h1, h2, h3</li>
- <li>Para párrafos: p</li>
- <li>Para listas: ul y ol.</li>
-</ul>
-
-<p>Dentro de las listas se usará la etiqueta habitual '<code>li</code>' para cada ítem de la lista.</p>
-
-<p>Dentro de las etiquetas 'h1', 'h2', 'h3', 'p' y 'li' se utilizará:</p>
-
-<ul>
- <li>Para texto en negrita: b o strong</li>
- <li>Para texto en cursiva/itálica: i o em</li>
-</ul>
-
-<p>La página de información recuperada debe ser completamente válida en XHTML, y entregada con el tipo MIME <code>application/xhtml+xml</code>.</p>
-
-<p>Para poder personalizar el texto según la configuración regional/local del usuario se colocará %APP_LOCALE% en updateInfoURL para que esta información esté incluida en la URL, o bien cualquier otras cadenas de substitución admitidas por updateURL, pero no es tan funcional.</p>
-
-<h4 id="Lo_que_ve_el_usuario_final" name="Lo_que_ve_el_usuario_final">Lo que ve el usuario final</h4>
-
-<p>El contenido de <code>updateInfoURL</code> será mostrado al usuario en una pantalla del complemento, con una lista de todas las actualizaciones disponibles. Entonces, el usuario puede hacer clic en el botón "Mostrar la información" y la verá a la derecha. (El botón cambiará a "Esconder la información")</p>
-
-<p><img alt="Image:Example_updateInfoURL2.PNG"></p>
-
-<h3 id="Asegurando_las_actualizaciones" name="Asegurando_las_actualizaciones">Asegurando las actualizaciones</h3>
-
-<p> </p>
-
-<p>Gecko 1.9 has added additional requirements designed to protect users from <a class="external" href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">man-in-the-middle attacks</a> and the like during add-on updates. In the install.rdf of the already installed add-on <code>updateURL</code> must be specified in one of the following ways:</p>
-
-<ul>
- <li>The <code><a href="/es/Install.rdf#updateURL" title="es/Install.rdf#updateURL">updateURL</a></code> uses https, or there is no <code>updateURL</code> at all (which defaults to <code>addons.mozilla.org</code> which is https)</li>
- <li>The <code><a href="/es/Install.rdf#updateURL" title="es/Install.rdf#updateURL">updateURL</a></code> uses http and the <code><a href="/es/Install.rdf#updateKey" title="es/Install.rdf#updateKey">updateKey</a></code> entry is specified which will be used to verify the data in the update manifest.</li>
-</ul>
-
-<p>Si se especifica una actualización de clave/firma (<code>updateKey</code>) en el archivo de instalación ( <code>install.rdf</code>), hay que incluir una <a href="#Manifiesto_de_actualizaci.C3.B3n_de_firma">firma digital</a> en el manifiesto de actualización sino la información será rechazada.</p>
-
-<p>In the update manifest delivered from the <code>updateURL</code> the <code>updateLink</code> must be specified in one of the following ways:</p>
-
-<ul>
- <li>The <code>updateLink</code> to the XPI file must use https</li>
- <li>The <code>updateLink</code> can use http and you must include an <code><a href="#Update_Hashes">updateHash</a></code> for the XPI file using sha1, sha256, sha384 or sha512 hash algorithms.</li>
-</ul>
-
-<p>Any entries in the update manifest that do not meet one of those two requirements will be ignored when checking for new versions.</p>
-
-<p>Note that https links to sites with invalid certificates or that redirect to http sites will fail for both the <code>update.rdf</code> and <code>updateLink</code> cases.</p>
-
-<h4 id="Los_cifrados_de_actualizaci.C3.B3n" name="Los_cifrados_de_actualizaci.C3.B3n">Los cifrados de actualización</h4>
-
-<p>Al fin de verificar la integridad del XPI descargado se puede proveer una entrada <code>updateHash</code> (cifrado de actualización) junto a <code>updateLink</code>. Este debe ser un cifrado generado desde los datos del fichero según un algoritmo admitido ('sha1', 'sha256', 'sha384' y 'sha512'). El algoritmo de cifrado utilizado debe anteponerse y separarse del cifrado en sí con '<code>:</code>'.</p>
-
-<pre> &lt;em:updateHash&gt;sha1:78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6&lt;/em:updateHash&gt;
-</pre>
-
-<p>El valor <code>updateHash</code>, <strong>debe</strong> empezar con la cadena del algoritmo de cifrado, es un error común quitar ese prefijo al poner un valor nuevo en <code>updateHash</code>:\n<em><strong>sha1:</strong>78fc1d2887eda35b4ad2e3a0b60120ca271ce6e6</em>"</p>
-
-<p>Además el cifrado del archivo descargado y el cifrado especificado también deben coincidir, sino dará un error.</p>
-
-<p>Varias herramientas permiten generar un cifrado:</p>
-
-<p>Diversas variantes de Unix incluyen: sha1sum, sha256sum y demás. Los usuarios de Windows pueden utilizar <a class="external" href="http://beeblebrox.org/hashtab/">HashTab</a> para un uso interactivo (fuera de compilación). Tienen también las <a class="external" href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">utilidades para Win</a> (aparte de los clásicos como Cygwin), las cuales son buenas para un uso no-interactivo:</p>
-
-<pre class="eval">sha1sum ARCHIVO
-</pre>
-
-<p>Además de <a class="external" href="http://md5deep.sourceforge.net/">md5deep</a> que es múlti-plataforma</p>
-
-<pre class="eval">sha1deep FILE
-</pre>
-
-<p>OpenSSL también genera cifrado:</p>
-
-<pre class="eval">openssl sha1 FILE
-</pre>
-
-<p>Para los usuarios de Windows, <a class="external" href="http://beeblebrox.org/hashtab/">HashTab</a> es una extensión shell... un simple clic da valores de cifrado para cualquier archivo.</p>
-
-<p>Aquí hay además un <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=395368">bug de mejoras</a> sobre como insertar a McCoy la generación automática de cifrado en archivos XPI.</p>
-
-<p>Y todos los lenguajes (de programación) populares lo ofrecen, por ejemplo: <a class="external" href="http://docs.python.org/lib/module-hashlib.html">Python</a>, Perl: CPAN Digest, <a class="external" href="http://de2.php.net/sha1_file">PHP</a></p>
-
-<h4 id="Firmar_el_manifiesto_de_actualizaci.C3.B3n" name="Firmar_el_manifiesto_de_actualizaci.C3.B3n">Firmar el manifiesto de actualización</h4>
-
-<p> </p>
-
-<p>If you wish to serve your update RDF over regular http, Gecko 1.9 based applications will require that you digitally sign the update manifest to ensure that it's information isn't tampered with between you creating it and applications retrieving it. The <a href="/es/McCoy" title="es/McCoy">McCoy</a> tool should be used to sign the update RDF.</p>
-
-<p>The technical details of the signing mechanism are beyond the scope of this document however the basics are as follows:</p>
-
-<p>The add-on author creates a public/private RSA cryptographic key pair.</p>
-
-<p>The public part of the key is DER encoded and then base 64 encoded and added to the add-on's <code>install.rdf</code> as an <code><a href="/es/Install.rdf#updateKey" title="es/Install.rdf#updateKey">updateKey</a></code> entry.</p>
-
-<p>When the author creates the update rdf file a tool is used to sign it using the private part of the key. Roughly speaking the update information is converted to a string, then hashed using a sha512 hashing algorithm and this hash is signed using the private key. The resultant data is DER encoded then base 64 encoded for inclusion in the update rdf as an <code>em:signature</code> entry.</p>