116 lines
5.1 KiB
TeX
116 lines
5.1 KiB
TeX
\documentclass[a4paper,french,12pt]{article}
|
||
|
||
\title{%
|
||
\includegraphics[width=0.25\linewidth]{./img/efrei-logo.jpg}
|
||
\vfill
|
||
XML et webservices\\
|
||
{\Large TP Cinéma}
|
||
\vfill
|
||
}
|
||
\author{Adam Belghith, Tunui Franken}
|
||
\date{\small Dernière compilation~: \today{} à \currenttime}
|
||
|
||
\newcommand{\versionnumber}{1.0}
|
||
\usepackage{rapport}
|
||
|
||
\begin{document}
|
||
|
||
\maketitle
|
||
\thispagestyle{empty}
|
||
\clearpage
|
||
|
||
\tableofcontents
|
||
\clearpage
|
||
|
||
\section{Définition d'un DTD et de documents XML}
|
||
|
||
\begin{enumerate}
|
||
|
||
\item Proposer un arbre XML pour représenter le film précédent.
|
||
|
||
\emph{Voir le fichier \texttt{cinema.xml}.}
|
||
|
||
\item Quels éléments doivent être ajoutés pour la construction d’un document XML représentant l'ensemble des films programmés dans le cinéma~?
|
||
Votre document XML doit contenir au moins 5 films différents.
|
||
|
||
\emph{Le document contient une liste de films.}
|
||
\emph{Pour qualifier un film, nous avons créé les balises suivants~:}
|
||
|
||
\begin{itemize}
|
||
\item \emph{\texttt{cinéma} --- balise racine}
|
||
\item \emph{\texttt{film} --- correspond à un film, et contient une \texttt{catégorie}}
|
||
\item \emph{\texttt{titre}}
|
||
\item \emph{\texttt{genres} --- liste de \texttt{genre}}
|
||
\item \emph{\texttt{réalisateur}}
|
||
\item \emph{\texttt{langue}}
|
||
\item \emph{\texttt{nationalités} --- liste de \texttt{nationalité}}
|
||
\item \emph{\texttt{acteurs} --- liste d'\texttt{acteur}}
|
||
\item \emph{\texttt{année}}
|
||
\item \emph{\texttt{note}, une par la ``presse'' et une par les ``spectateurs''.}
|
||
\item \emph{\texttt{durée}, en minutes}
|
||
\item \emph{\texttt{synopsis}}
|
||
\item \emph{\texttt{séances} --- liste de \texttt{séance}.}
|
||
\emph{Chaque \texttt{séance} contient un attribut \texttt{jour} et l'horaire comme donnée.}
|
||
\end{itemize}
|
||
|
||
\item Proposer une DTD pour valider les arbres XML utilisés afin de représenter l’ensemble des programmes du cinéma.
|
||
Votre DTD doit respecter les contraintes suivantes~:
|
||
|
||
\begin{itemize}
|
||
\item Les notes de la presse et celles des spectateurs sont facultatives.
|
||
\item Chaque film doit avoir un titre.
|
||
\item Chaque film doit avoir un temps de projection.
|
||
\end{itemize}
|
||
|
||
\emph{Voir le fichier \texttt{cinema.dtd}.}
|
||
\emph{Le DTD est référencé dans le fichier \texttt{xml} mais commenté.}
|
||
\emph{Pour l'utiliser, décommenter le DTD et commenter le XSL.}
|
||
|
||
\item Proposer une DTD moins restrictive qui permettrait de donner les descriptions des films dans un ordre quelconque.
|
||
|
||
\emph{En partant du principe que la balise \texttt{synopsis} est facultative, on pourrait intercaler \texttt{synopsis?} entre chaque balise~:}
|
||
|
||
\begin{lstlisting}[gobble=12]
|
||
<!ELEMENT film (synopsis?, genres, synopsis? réalisateur, synopsis? langue, synopsis? nationalité, synopsis? acteurs, synopsis? année, synopsis?, notes?, synopsis?, durée, synopsis?, séances, synopsis?)>
|
||
\end{lstlisting}
|
||
|
||
\item Mise en page et l'affichage en utilisant le CSS\@.
|
||
Les contraintes suivantes doivent être prises en compte~:
|
||
|
||
\begin{itemize}
|
||
\item Chaque film est affiché dans un bloc séparé.
|
||
\item Vous allez utiliser la police~: Times New Roman 12 points.
|
||
\item Les titres sont en gras, 14 points.
|
||
\item Le réalisateur et l'année de la production devrait être en rouge.
|
||
\item Les acteurs sont en bleu, italique et représentent des hyperliens vers des pages HTML décrivant la filmographie de l'acteur.
|
||
\item Pour la programmation des films, vous êtes libre de donner le format de l'affichage.
|
||
\end{itemize}
|
||
|
||
\emph{Le fichier \texttt{cinema.css} est fait pour être appelé directement par le fichier XML (décommenter sa référence dans le fichier \texttt{cinema.xml}).}
|
||
\emph{Le fichier \texttt{cinema-xsl.css} est appelé par le fichier \texttt{cinema.xsl} (voir exercice~\ref{exercice-xsl})}
|
||
|
||
\end{enumerate}
|
||
|
||
\section{XML schema}
|
||
|
||
Proposer un schéma XML pour le document XML des films.
|
||
Le schéma XML doit être spécifié dans un fichier séparé (externe) avec l'extension \texttt{.xsd}.
|
||
Ajouter une référence vers ce schéma dans votre document XML\@.
|
||
|
||
\section{XSLT}\label{exercice-xsl}
|
||
|
||
Proposer une feuille de style XSLT pour votre fichier XML\@.
|
||
|
||
\emph{Voir les fichiers \texttt{cinema.xsl} et \texttt{cinema-xsl.css}.}
|
||
|
||
\emph{Les navigateurs modernes ne permettent pas l'appel vers un fichier extérieur en tant que ressource \texttt{file://} (voir \url{https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp\#loading\_a\_local\_file}).}
|
||
|
||
\emph{Pour résoudre ce problème et permettre l'inclusion du XSLT, on peut faire tourner un serveur HTTP local, par exemple~:}
|
||
|
||
\begin{lstlisting}
|
||
$ python3 -m http.server 8080
|
||
\end{lstlisting}
|
||
|
||
\emph{Puis dans un navigateur aller sur \texttt{http://localhost:8080}.}
|
||
|
||
\end{document}
|