![]() ![]() ![]() |
► 13. Applets, JavaScript y XML
► 13.5 XML y GGB
Las construcciones de GeoGebra se guardan como archivos de extensión GGB (o
GGT, si se trata de una herramienta personal). Un archivo GGB no es más que un
archivo comprimido (ZIP) que contiene el archivo de texto llamado
geogebra.xml con todos los datos, un archivo con una imagen en miniatura de
la Vista Gráfica, llamado geogebra_thumbnail.png, y todas las
imágenes que se hayan insertado con la herramienta
Imagen. Si además la construcción contiene alguna herramienta
personal, también habrá un archivo llamado geogebra_macro.xml.
Mostraremos como usar esta información para recuperar el proceso realizado al crear una herramienta personal.
Al igual que el HTML, el XML es un lenguaje de etiquetas < ... >. La diferencia reside en que XML permite la creación de nuevas etiquetas, según las necesidades del programador. De esta forma, los desarrolladores de GeoGebra pueden en cualquier momento añadir más etiquetas o propiedades a medida que requieran de ellas, así como modificar las ya existentes.
La estructura general de las etiquetas de GeoGebra es:
<?xml version="1.0" encoding="utf-8"?>
<geogebra format="3.2">
<gui> ... </gui>
<euclidianView> ... </euclidianView>
<kernel> ... </kernel>
<construction> ... </construction>
</geogebra>
El archivo en_blanco.ggb contiene el siguiente código, correspondiente a un archivo sin ningún objeto creado.
Código | Descripción |
<?xml version="1.0" encoding="utf-8"?> | Declaración XML (versión que se usará). |
<geogebra format="3.2"> | Inicio. Declaración DTD (juego de etiquetas que se va a usar). |
<gui> | Inicio de datos sobre la configuración de la interfaz. |
<show algebraView="false" spreadsheetView="false" auxiliaryObjects="false" algebraInput="true" cmdList="true"/> | No mostrar la Vista Algebraica, ni la Hoja de Cálculo, ni la carpeta de objetos auxiliares. Mostrar la Barra de Entrada con la lista de comandos. |
<toolbar str="0 39 59 || 1 5 19 | 2 15 45 18 , 7 37 | 4 3 8 9 , 13 44 , 58 , 47 || 16 51 | 10 34 53 11 , 24 20 22 , 21 23 | 55 56 57 , 12 || 36 46 , 38 49 50 | 30 29 54 32 31 33 | 25 52 , 17 26 , 14 || 40 41 42 , 27 28 35 , 6"/> | Mostrar todas las herramientas. (No hay ninguna herramienta personal.) |
<font size="12"/> | Tamaño de letra, 12 puntos. |
</gui> | Fin de datos sobre la configuración de la interfaz. |
<euclidianView> | Inicio de datos sobre la configuración del sistema de coordenadas. |
<size width="1272" height="856"/> | Ancho y alto de la ventana. |
<coordSystem xZero="215.0" yZero="314.9999999999998" scale="50.0" yscale="50.0"/> | Posición del origen cartesiano de referencia. |
<evSettings axes="false" grid="false" gridIsBold="false" pointCapturing="3" pointStyle="0" rightAngleStyle="1" checkboxSize="13" gridType="0"/> | No mostrar ejes ni cuadrícula. La cuadrícula no está resaltada. Atracción a cuadrícula en estado Automático. Estilo de punto, sólido. Estilo de ángulo recto, cuadrado. Tamaño de casilla de control, normal. Estilo de cuadrícula, ortogonal. |
<bgColor r="255" g="255" b="255"/> | Color de fondo, blanco. |
<axesColor r="64" g="64" b="64"/> | Color de ejes, gris muy oscuro. |
<gridColor r="204" g="204" b="204"/> | Color de cuadrícula, gris muy claro. |
<lineStyle axes="1" grid="0"/> | Estilo de trazo, ejes con flecha, cuadrícula continua. |
<axis id="0" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/> | No mostrar eje X. Este eje carece de etiqueta y de unidad. Estilo de graduación normal. Mostrar números con el eje. |
<axis id="1" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/> | No mostrar eje Y. Este eje carece de etiqueta y de unidad. Estilo de graduación normal. Mostrar números con el eje. |
</euclidianView> | Fin de datos sobre la configuración del sistema de coordenadas. |
<kernel> | Inicio de datos sobre el núcleo del programa. |
<continuous val="false"/> | Continuidad, desactivada. |
<decimals val="2"/> | Decimales a mostrar, 2. |
<angleUnit val="degree"/> | Unidad angular, grados. |
<coordStyle val="0"/> | Estilo de coordenadas, separadas por coma. |
</kernel> | Fin de datos sobre el núcleo del programa. |
<construction title="" author="" date=""> | Inicio de datos sobre la construcción (que no hay, claro). |
</construction> | Fin de datos sobre la construcción (que no hay, claro). |
</geogebra> | Fin del código XML relativo al juego de etiquetas "geogebra". |
Supongamos que hemos creado una herramienta personal pero no hemos guardado el archivo GGB correspondiente (sólo el GGT). O bien, que hemos encontrado una construcción que usa herramientas personales y queremos conocer el proceso seguido para su creación.
Como ejemplo, usaremos un archivo con varias herramientas personales. Queremos recuperar el proceso de construcción de la herramienta denominada "Cuadrado".
Primero prepararemos "el recipiente" en el que posteriormente introduciremos ese proceso.
![]()
|
Ahora iremos en busca del proceso que hay detrás de la herramienta personal "Cuadrado".
![]()
...
|
Copiaremos el contenido del portapapeles en la construcción en blanco que teníamos preparada.
![]()
|
![]()
|
Crear una nueva construcción, partiendo de una vacía, que recoja el proceso para crear la herramienta personal "Triángulo equilátero" usada en el archivo "semirregulares.ggb".
|
El XML es un lenguaje muy superior al HTML, un lenguaje que permite fácilmente compartir información entre distintas aplicaciones y servidores. Uno y otro son lenguajes derivados de uno más poderoso, el SGML, pero este último es demasiado complejo para resultar sencilla su implantación y divulgación, por lo que el XML parece destinado a convertirse en el estándar de intercambio de información.
Por ejemplo, el proyecto europeo INTERGEO para la divulgación de la Geometría Dinámica, con un presupuesto de 1.427.849 €, tiene como objetivo la creación de una base de datos con recursos de Geometría Dinámica en diferentes soportes (naturalmente, GeoGebra es uno de ellos, pero hay otros como Cabri, Cinderella...) que puedan ser compartidos, es decir, traducidos a un formato común. Esto será posible a estándares como OpenMath, MathML, TeX y OWL, pero sobre todo gracias al lenguaje XML.
Investigación: