(: Selección de todos los titulares. :)
doc("titulares.xml")/titulares/titular
------------
(: Miguel I. García López :)
(: Selección de todos los nombres :)
(: de los titulares. :)
doc("titulares.xml")/titulares/titular/nombre
-------
(: Miguel I. García López :)
(: Selección de todos los apuntes :)
(: de la la cuenta ES33123123123. :)
doc("cuentas.xml")/cuentas/cuenta[@iban="ES33123123123"]/apuntes/apunte
-------
(: Miguel I. García López :)
(: Elimina el titular con :)
(: el NIF 83745090T. :)
delete node
doc("titulares")//titulares/titular[@nif="83745090T"]
-------
(: Miguel I. García López :)
(: Elimina el apunte nº de 2 :)
(: de la cuenta ES33123123123. :)
delete node
doc("cuentas")//cuentas/cuenta[@iban="ES33123123123"]/apuntes/apunte[@numero="2"]
---------
(: Miguel I. García López :)
(: Selección de todos los apuntes :)
(: de cualquier cuenta que no sean :)
(: ingresos (importe < 0) :)
for $sq_apunte in doc("cuentas")/cuentas/cuenta/apuntes/apunte
where $sq_apunte/importe < 0
return $sq_apunte
--------
(: Miguel I. García López :)
(: Consulta de todas las cuentas :)
(: de un titular, almacenado en la :)
(: variable $sq_titular. :)
(: Sólo muestra el nº de IBAN. :)
let $sq_titular := "83845902R"
for $sq_path in doc("cuentas")/cuentas/cuenta/titulares/titular
let $sq_iban := $sq_path/../../@iban
where $sq_path = $sq_titular
return data($sq_iban)
-------
(: Miguel I. García López :)
(: Selección ordenada de todos los nombres :)
(: de los titulares, cuya letra del cif :)
(: sea "X". :)
for $sq_titular in doc("titulares")/titulares/titular
let $sq_letra := substring($sq_titular/@nif, 9, 1)
where $sq_letra = "X"
order by $sq_titular/nombre
return $sq_titular/nombre
----------
(: Miguel I. García López :)
(: Inserta un nuevo registro al principio :)
(: de la tabla 'titulares'. :)
insert node
<titular nif="73890234K">
<nombre>Pobre Cico, Daniel</nombre>
<domicilio>C/Del Esmirriao, 23-1</domicilio>
<codigo_postal>46900</codigo_postal>
<poblacion>Benimacarrón</poblacion>
<provincia>Valencia</provincia>
</titular>
as first into doc("titulares")//titulares
---------
(: Miguel I. García López :)
(: Inserta un nuevo registro al final :)
(: de la tabla 'cuentas'. :)
(: Es decir, crea una nueva cuenta :)
(: sin apuntes, y el titular es el :)
(: correspondiente al registro :)
(: insertado con el xq anterior. :)
insert node
<cuenta iban="UK9394KKK7625341">
<fecha_apertura>2014-05-10</fecha_apertura>
<titulares>
<titular>73890234K</titular>
</titulares>
</cuenta>
as last into doc("cuentas")//cuentas
-------
(: Miguel I. García López :)
(: Crea un apunte, dentro de la :)
(: cuenta 'UK9394KKK7625341', :)
(: creada con el anterior xq. :)
insert node
<apuntes>
<apunte numero="1">
<fecha>2014-05-10</fecha>
<concepto>Ingreso efectivo</concepto>
<importe>300.00</importe>
</apunte>
</apuntes>
as last into doc("cuentas")/cuentas/cuenta[@iban="UK9394KKK7625341"]
------------
(: Miguel I. García López :)
(: Actualiza el código postal del :)
(: titular con NIF 83709245Y. :)
replace value of node
doc("titulares")//titulares/titular[@nif="83709245Y"]/codigo_postal
with
"46999"
----------
(: Miguel I. García López :)
(: Actualiza el concepto del apunte nº 1 :)
(: de la cuenta ES33123123123, cambiándolo :)
(: de 'Ingreso efectivo' :)
(: a 'Ingreso cheque'. :)
replace value of node
doc("cuentas")//cuentas/cuenta[@iban="ES33123123123"]/apuntes/apunte[@numero="1"]/concepto
with
"Ingreso cheque"
---------------
(: Miguel I. García López :)
(: Cambia la fecha de apertura :)
(: de la cuenta ES33123123123. :)
replace value of node
doc("cuentas")//cuentas/cuenta[@iban="ES33123123123"]/fecha_apertura
with
"2013-09-01"
-----------------
(: Miguel I. García López :)
(: Genera un archivo HTML con todas :)
(: las cuentas de la BD, ordenadas :)
(: por su número de IBAN, indicando :)
(: la fecha de apertura, y el nº de :)
(: titulares que tiene. :)
(: Muestra también el número de :)
(: cuentas que hay en la BD. :)
<html>
<head>
<title>Listado de cuentas</title>
<meta charset="UTF-8" />
</head>
<body style="font-family: monospace">
<h1>Banco Chambroso</h1>
<h2>Listado de cuentas</h2>
<table style="border: 1px solid black">
<caption style="text-align: left; font-weight: bold">Hay {count(doc("cuentas")//cuentas/cuenta)} cuentas:</caption>
<tr>
<th style="background-color: brown">IBAN</th>
<th style="background-color: brown">Fecha de apertura</th>
<th style="background-color: brown">Nº de titulares</th>
</tr>
{
for $sq_cuenta in doc("cuentas")//cuentas/cuenta
let $sq_iban := $sq_cuenta/@iban
let $sq_fecha := $sq_cuenta/fecha_apertura
let $sq_titulares := $sq_cuenta/titulares/titular
order by $sq_iban
return
<tr>
<td style="background-color: yellow">{data($sq_iban)}</td>
<td style="background-color: yellow">{data($sq_fecha)}</td>
<td style="background-color: yellow">{count($sq_titulares)}</td>
</tr>
}
</table>
</body>
</html>
----------------------
(: Miguel I. García López :)
(: Genera un archivo HTML con los titulares :)
(: y apuntes de la cuenta almacenada en :)
(: $sq_iban y calcula el saldo actual. :)
(: Formatea la salida de importes mediante :)
(: una función local. :)
declare variable $sq_iban as xs:string:="ES33123123123";
(: Función definida para formatear la salida de importes :)
declare function local:formatea($valor as xs:double) as xs:string
{
let $cadena := format-number($valor, "###,##0.00 €")
return $cadena
};
<html>
<head>
<title>Detalle de la cuenta: {$sq_iban}</title>
<meta charset="UTF-8" />
</head>
<body style="font-family: monospace">
<h1>Caja de Ahogos y Tensiones</h1>
<h2>Detalle de la cuenta: {$sq_iban}</h2>
<table style="border: 1px solid black">
<caption style="text-align: left; font-weight: bold">Titulares:</caption>
<tr>
<th style="background-color: brown">NIF</th>
<th style="background-color: brown">Nombre</th>
</tr>
{
for $titular in doc("cuentas")//cuenta[@iban = $sq_iban]/titulares/titular
let $nif := $titular
let $nombre := doc("titulares")//titular[@nif=$nif]/nombre
return
<tr>
<td style="background-color: yellow">{data($nif)}</td>
<td style="background-color: yellow">{data($nombre)}</td>
</tr>
}
</table>
<p></p>
<table style="border: 1px solid black">
<caption style="text-align: left; font-weight: bold">Movimientos:</caption>
<tr>
<th style="background-color: brown">Fecha</th>
<th style="background-color: brown">Concepto</th>
<th style="background-color: brown">Importe</th>
</tr>
{
for $apunte in doc("cuentas")//cuenta/apuntes/apunte
let $fecha := $apunte/fecha
let $concepto := $apunte/concepto
let $importe := $apunte/importe
where $apunte/../..[@iban=$sq_iban]
order by $apunte/@numero
return
<tr>
<td style="background-color: yellow">{data($fecha)}</td>
<td style="background-color: yellow">{data($concepto)}</td>
<td style="background-color: yellow; text-align: right">{local:formatea(data($importe))}</td>
</tr>
}
<tr>
<td></td>
<td>Saldo ...</td>
<td style="background-color: yellow; text-align: right">
{
local:formatea(sum(doc("cuentas")//cuenta[@iban=$sq_iban]/apuntes/apunte/importe))
}
</td>
</tr>
</table>
</body>
</html>
-----------
(: Miguel I. García López :)
(: Genera un archivo HTML con todos :)
(: los titulares de la BD. :)
(: Muestra también el número total :)
(: de titulares que hay. :)
(: Ordena por nif. :)
<html>
<head>
<title>Titulares de la BD</title>
<meta charset="UTF-8" />
</head>
<body style="font-family: monospace">
<h1>Banco Ralito</h1>
<h2>Listado de titulares</h2>
<table style="border: 1px solid black">
<caption style="text-align: left; font-weight: bold">Hay {count(doc("titulares")//titulares/titular)} titulares:</caption>
<tr>
<th style="background-color: brown">NIF</th>
<th style="background-color: brown">Nombre</th>
<th style="background-color: brown">Domicilio</th>
<th style="background-color: brown">CP</th>
<th style="background-color: brown">Población</th>
<th style="background-color: brown">Provincia</th>
</tr>
{
for $sq_titular in doc("titulares")//titulares/titular
let $sq_nif := $sq_titular/@nif
let $sq_nombre := $sq_titular/nombre
let $sq_domicilio := $sq_titular/domicilio
let $sq_codigo_postal := $sq_titular/codigo_postal
let $sq_poblacion := $sq_titular/poblacion
let $sq_provincia := $sq_titular/provincia
order by $sq_nif
return
<tr>
<td style="background-color: yellow">{data($sq_nif)}</td>
<td style="background-color: yellow">{data($sq_nombre)}</td>
<td style="background-color: yellow">{data($sq_domicilio)}</td>
<td style="background-color: yellow">{data($sq_codigo_postal)}</td>
<td style="background-color: yellow">{data($sq_poblacion)}</td>
<td style="background-color: yellow">{data($sq_provincia)}</td>
</tr>
}
</table>
</body>
</html>
No hay comentarios:
Publicar un comentario