diff options
author | Santo Cariotti <santo@dcariotti.me> | 2021-02-09 21:35:03 +0100 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2021-02-09 21:35:03 +0100 |
commit | 5ec97dc1ea4a8eec206a908cbb2b8552301a7f35 (patch) | |
tree | 4c5c38ca29b713d1c6553a45e9afa1c6a0191655 | |
parent | c670e0583e5468646ab42903c95a80662d96cc89 (diff) |
databases: xml exercise
-rw-r--r-- | Year_2/Databases/libri.dtd | 10 | ||||
-rw-r--r-- | Year_2/Databases/libri.xml | 63 | ||||
-rw-r--r-- | Year_2/Databases/libri_ex1.xquery | 2 | ||||
-rw-r--r-- | Year_2/Databases/libri_ex2.xquery | 9 |
4 files changed, 84 insertions, 0 deletions
diff --git a/Year_2/Databases/libri.dtd b/Year_2/Databases/libri.dtd new file mode 100644 index 0000000..fb0a018 --- /dev/null +++ b/Year_2/Databases/libri.dtd @@ -0,0 +1,10 @@ +<!ELEMENT libri (libro)> +<!ELEMENT libro (autore+, titolo, isbn, introduzione, capitoli)> +<!ELEMENT autore (#PCDATA)> +<!ELEMENT titolo (#PCDATA)> +<!ELEMENT isbn (#PCDATA)> +<!ELEMENT introduzione (#PCDATA)> +<!ELEMENT capitoli (capitolo+)> +<!ELEMENT capitolo (numero, titolo, testo)> +<!ELEMENT numero (#PCDATA)> +<!ELEMENT testo (#PCDATA)> diff --git a/Year_2/Databases/libri.xml b/Year_2/Databases/libri.xml new file mode 100644 index 0000000..0535ba4 --- /dev/null +++ b/Year_2/Databases/libri.xml @@ -0,0 +1,63 @@ +<?xml version="1.0"?> +<!DOCTYPE libri SYSTEM "libri.dtd"> +<libri> + <libro> + <autore>Pirandello</autore> + <titolo>Novelle per un anno</titolo> + <isbn>1234656</isbn> + <introduzione>aaaa</introduzione> + <capitoli> + <capitolo> + <numero>1</numero> + <titolo>Capitolo 1</titolo> + <testo>...</testo> + </capitolo> + <capitolo> + <numero>2</numero> + <titolo>Capitolo 2</titolo> + <testo>...</testo> + </capitolo> + </capitoli> + </libro> + <libro> + <autore>Pirandello</autore> + <titolo>Il fu mattia pascal</titolo> + <isbn>1234656</isbn> + <introduzione>aaaa</introduzione> + <capitoli> + <capitolo> + <numero>1</numero> + <titolo>Capitolo 1</titolo> + <testo>...</testo> + </capitolo> + <capitolo> + <numero>2</numero> + <titolo>Capitolo 2</titolo> + <testo>...</testo> + </capitolo> + </capitoli> + </libro> + <libro> + <autore>Aligheri</autore> + <titolo>Divina commedia</titolo> + <isbn>1234656</isbn> + <introduzione>Nel mezzo del cammin...</introduzione> + <capitoli> + <capitolo> + <numero>1</numero> + <titolo>Capitolo 1</titolo> + <testo>...</testo> + </capitolo> + <capitolo> + <numero>2</numero> + <titolo>Capitolo 2</titolo> + <testo>...</testo> + </capitolo> + <capitolo> + <numero>3</numero> + <titolo>Capitolo 3</titolo> + <testo>...</testo> + </capitolo> + </capitoli> + </libro> +</libri> diff --git a/Year_2/Databases/libri_ex1.xquery b/Year_2/Databases/libri_ex1.xquery new file mode 100644 index 0000000..694c65a --- /dev/null +++ b/Year_2/Databases/libri_ex1.xquery @@ -0,0 +1,2 @@ +for $libri in doc("libri.xml")//libro +return count($libri//capitolo) diff --git a/Year_2/Databases/libri_ex2.xquery b/Year_2/Databases/libri_ex2.xquery new file mode 100644 index 0000000..e20b41f --- /dev/null +++ b/Year_2/Databases/libri_ex2.xquery @@ -0,0 +1,9 @@ +let $f := doc("libri.xml") +let $authors := $f//autore + +for $author in distinct-values($authors) +let $books := $f//libro[autore=$author] +return <author> + <name>{ $author }</name> + <num>{ count($books) }</num> + </author> |