jueves, 6 de agosto de 2009

Esquema XSD para una Enumeracion Básica

Muchos programas trabajan con esquemas de datos en formato XML, y aunque podemos encontrar herramientas gráficas muy potentes para crear esquemas, algunas veces no tenemos tiempo de buscar la herramienta o simplemente es demasiado rollo para crear el pequeño esquema que nos hace falta.

Una enumeración (Enumeration) es un tipo de datos básico con restricciones en los valores que puede llegar a tomar.
Esta sería una plantilla para crear una enumeración:


<xsd:schema targetnamespace="http://#namespace#"
xsd="http://www.w3.org/2001/XMLSchema"
bons0="http://#namespace#">
<xsd:include schemalocation="#nombreDelEsquema#.xsd"></xsd:include>
<xsd:element name="#nombreDelParametro#" type="bons0:#nombreDelEsquema#">
<xsd:simpletype name="#nombreDelParametro#">
<xsd:restriction base="xsd:string">

<xsd:enumeration value="#valor 1#">
<xsd:enumeration value="#valor 2#">
<xsd:enumeration value="#valor 3#">

</xsd:enumeration>
</xsd:enumeration>
</xsd:enumeration>
</xsd:restriction></xsd:simpletype></xsd:element></xsd:schema>


Un esquema para un tipo complejo que se encuentra fácilmente navegando es el siguiente:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="SONG" type="songType"/>

<xsd:simpleType name="oligopolyMember">

<xsd:restriction base="xsd:string">
<xsd:enumeration value="Warner-Elektra-Atlantic"/>
<xsd:enumeration value="Universal Music Group"/>
<xsd:enumeration value="Sony Music Entertainment, Inc."/>
<xsd:enumeration value="Capitol Records, Inc."/>
<xsd:enumeration value="BMG Music"/>

</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="songType">
<xsd:sequence>
<xsd:element name="TITLE" type="xsd:string"/>
<xsd:element name="COMPOSER" type="xsd:string"
maxOccurs="unbounded"/>

<xsd:element name="PRODUCER" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="PUBLISHER" type="oligopolyMember"
minOccurs="0"/>
<xsd:element name="LENGTH" type="xsd:timeDuration"/>
<xsd:element name="YEAR" type="xsd:gYear"/>
<xsd:element name="ARTIST" type="xsd:string"
maxOccurs="unbounded"/>
</xsd:sequence>

</xsd:complexType>

</xsd:schema>

miércoles, 24 de junio de 2009

URLs dinámicas mediante GET


Un fragmento de código sencillo para poder introducir mediante javascript una URL dinámica en un enlace href. En este ejemplo, concatenamos la cadena de caracteres introducida en una caja de texto con la url de la página principal de google. De forma que si introducimos xouelutions en la caja de texto, se estará generando de forma dinámica la url: http://www.google.es/search?hl=es&site=&q=xouelutions&btnG=Buscar&meta=

 
<html>
<script>
function makeURL(){
alert("campo1v");
// alert(document.getElementsByName("campo1").length);
// alert(document.getElementsByName("campo1")[0].value);
var campo1v = document.getElementsByName("campo1")[0].value;
alert(campo1v);
var url = "http://www.google.es";
url = url + "/search?hl=es&site=&q=" + campo1v + "&btnG=Buscar&meta=";
alert(url);
window.open(url);
}
</script>
<head>
<title>Pagina de prueba</title>
</head>
<body>
<form>
<input type="text" name="campo1" />
</form>

<a href="#" onclick="makeURL(); return false;" target="_new">PINCHA AQUI</a>
</body>
</html>

martes, 23 de junio de 2009

Hola

Hace ya tiempo que quería montar un blog para poder recopilar y tener centralizada toda la información que me ha sido útil a lo largo de mis años como estudiante y como trabajador.

Pues este espero sea el resultado, un nuevo proyecto en el que me embarco a mediados del 2009 y que anhelo sea capaz de hacer perdurar con los años. Mi deseo es que a gente como yo, les lleguen a resultar utiles las explicaciones, tutoriales, guias, códigos y aplicaciones que con el tiempo iré subiendo al blog.

Por supuesto, los artículos que se publicarán tendrán mucho o TODO que ver con mi area de experiencia (no es de esperar que hable de comida, jardinería, fontanería, etc). Soy Ingeniero Informático con un perfil amplio, con intereses tanto en Software como en Hardware, en lo físico y electrónico como en lo conceptual y metafísico.

A día de hoy estoy especializandome en BPM (Business Process Management), llevo 2 años modelando, construyendo e implantando procesos de negocio en UML y BPMN. Trabajando con herramientas de Control de Procesos como Aqualogic de BEA o Websphere Integration Developer y Business Process Modeler de IBM. Entornos java J2EE basados en SOA (Service Oriented Architecture) o por comandos CGI.

No quiero poner mi CV así de primeras, sobretodo porque aun soy un novato y no rellenaría ni una página, pero sí enumeraré los campos que me interesan com informático y como ingeniero:

  • Lenguajes de programación: BPEL, BPMN, UML, C, C++, Java J2EE, SQL, UNIX, LINUX, HTML, CSS, JSP, PHP, XML, XSL, ORACLE, ENSAMBLADOR, etc.
  • Hardware : Microcontroladores, robótica, redes (LAN, WAN, WIFI), routers, administración de sistemas, circuitos combinacionales.
  • Software: Aqualogic BPM, Rational Software Architect, Websphere Integration Developer , WebSphere Business Modeler , Spring WebFlow, Netbeans 5.5, VMWare, Excel, Windows(NT, 2000, XP, Vista), Linux(Red Hat, Mandrake, GNOME, KDE, Wifi-Slax, Ubuntu), Microsoft Office, OpenOffice, Autocad R14, Paint Shop 9.0, Photo Shop 9.0, Apache, edición de video y sonido digital, autoría DVD, sobre otro número de variadas aplicaciones software.
  • Otros conocimientos: Sistemas Basados en el Conocimiento, Sistemas Expertos, Seguridad, Sistemas Criptográficos, Integración de Sistemas, Arquitectura de Sistemas, Sistemas de Comunicación, Ingeniería del Software, Comunicación Hombre-Máquina, Data-Mining, etc.


Un saludo a todos, y bienvenidos!

xOUe