\documentclass[ignorenonframetext,]{beamer}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbolsempty
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
\else % if luatex or xelatex
  \ifxetex
    \usepackage{mathspec}
  \else
    \usepackage{fontspec}
  \fi
  \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\newif\ifbibliography
\hypersetup{
            pdftitle={Arquivos XML},
            pdfborder={0 0 0},
            breaklinks=true}
\urlstyle{same}  % don't use monospace font for urls

% Prevent slide breaks in the middle of a paragraph:
\widowpenalties 1 10000
\raggedbottom

\AtBeginPart{
  \let\insertpartnumber\relax
  \let\partname\relax
  \frame{\partpage}
}
\AtBeginSection{
  \ifbibliography
  \else
    \let\insertsectionnumber\relax
    \let\sectionname\relax
    \frame{\sectionpage}
  \fi
}
\AtBeginSubsection{
  \let\insertsubsectionnumber\relax
  \let\subsectionname\relax
  \frame{\subsectionpage}
}

\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{0}
%-----------------------------------------------------------------------

\usepackage[T1]{fontenc}

\usepackage[math]{iwona}
% \usepackage[math]{kurier}

% \usepackage[sfdefault]{roboto}
\usepackage[sfdefault, condensed]{roboto}
% \usepackage[default]{sourcesanspro}

% \usefonttheme[onlymath]{serif}
% \usefonttheme[onlymath]{sans}

\usepackage{csquotes}

% % Font for code. ----------------------------
% \usepackage{inconsolata}
\usepackage[scaled=0.8]{beramono}

%-----------------------------------------------------------------------

% \usepackage{lmodern}
\usepackage{amssymb, amsmath}
\setcounter{MaxMatrixCols}{20} % bmatrix, max number of columns.

% \usepackage{ifxetex, ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\usepackage[utf8]{inputenc}
\usepackage[shorthands=off,main=brazil]{babel}
\usepackage{graphicx}

\usepackage{xcolor}
\usepackage{setspace}
\usepackage{xspace}
\usepackage{tabularx}

\setlength{\belowcaptionskip}{-0.5em}
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{0}

%-----------------------------------------------------------------------
% Definições de esquema de cores.

% Ubuntu.
% http://www.color-hex.com/color-palette/2018
\definecolor{ubuntu_purple}{HTML}{2CA05A} % Título.
\definecolor{ubuntu_orange}{HTML}{686868} % Estrutura.
\definecolor{gray_dark}{HTML}{333333}  % Texto.
\definecolor{gray_light}{HTML}{DDDDDD} % Faixa.

%-----------------------------------------------------------------------
% Bibliography.

% \usepackage[style=authoryear]{biblatex}
% Use:
%   \cite{<ref>}
%   \parencite{<ref>}
%   \fullcite{<ref>}
%   \footfullcite{<ref>}
% ATTENTION: Compilation = pdflatex > biber > pdflatex > pdflatex.
% Call refs.bib at preamble with: \addbibresource{refs.bib}
%
%-----------------------------------------------------------------------

\usepackage{caption}
\captionsetup{
  font=footnotesize,
  labelfont={color=ubuntu_orange},
  labelsep=period}
\usepackage{subfig}

\makeatletter
\let\@@magyar@captionfix\relax
\makeatother

\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}

%-----------------------------------------------------------------------

\usepackage{tikz}

\usebackgroundtemplate{
  \tikz[overlay, remember picture]
  \node[at = (current page.center),
        inner sep = 0pt] {%
          \includegraphics[keepaspectratio, height=\paperheight]{config/ufpr-fachada-baixo-1.jpg}
        };
}

%-----------------------------------------------------------------------

\hypersetup{
  colorlinks=true,
  linkcolor=ubuntu_orange,
  urlcolor=ubuntu_purple,
  citecolor=ubuntu_purple
}

%-----------------------------------------------------------------------
% ATTENTION: http://www.cpt.univ-mrs.fr/~masson/latex/Beamer-appearance-cheat-sheet.pdf

\usetheme{default}

\setbeamerfont{title}{series=\bfseries, size=\huge, parent=structure}
\setbeamerfont{subtitle}{series=\bfseries, size=\Large, parent=structure}
\setbeamerfont{frametitle}{series=\bfseries, size=\LARGE, parent=structure}

\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamertemplate{caption}[numbered]{}
\setbeamertemplate{section in toc}[sections numbered]
\setbeamertemplate{subsection in toc}[subsections numbered]
\setbeamertemplate{sections/subsections in toc}[ball]{}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\setbeamertemplate{frametitle continuation}{\gdef\beamer@frametitle{}\vspace*{1ex}}

\setbeamertemplate{enumerate items}[default]
\setbeamertemplate{itemize items}{\scriptsize\raise1.25pt\hbox{\donotcoloroutermaths$\blacktriangleright$}}

% Rodapé.
\setbeamercolor{title in head/foot}{parent=subsection in head/foot}
\setbeamercolor{author in head/foot}{bg=ubuntu_orange, fg=white}
\setbeamercolor{date in head/foot}{parent=subsection in head/foot, fg=ubuntu_orange}

% Cabeçalho.
\setbeamercolor{section in head/foot}{bg=ubuntu_purple, fg=ubuntu_orange}
\setbeamercolor{subsection in head/foot}{bg=ubuntu_purple, fg=white}

\setbeamercolor{title}{fg=ubuntu_purple}       % Título dos slides.
\setbeamercolor{subtitle}{fg=ubuntu_orange}    % Subtítulo.
\setbeamercolor{institute}{fg=gray_dark}       % Instituição.
\setbeamercolor{frametitle}{fg=ubuntu_purple}  % De quadro.
\setbeamercolor{structure}{fg=ubuntu_orange}   % Listas e rodapé.
\setbeamercolor{item projected}{bg=gray_dark}
\setbeamercolor{normal text}{fg=gray_dark}     % Texto.

%-----------------------------------------------------------------------
% To remove empty brackets of \institution.

\makeatletter
\setbeamertemplate{footline}{
  \leavevmode%
  \hbox{%
    \begin{beamercolorbox}[
      wd=0.3\paperwidth, ht=2.25ex, dp=1ex, right]{author in head/foot}%
      \usebeamerfont{author in head/foot}\insertshortauthor{}\hspace*{1ex}
    \end{beamercolorbox}%
    \begin{beamercolorbox}[
      wd=0.6\paperwidth, ht=2.25ex, dp=1ex, left]{title in head/foot}%
      \usebeamerfont{title in head/foot}\hspace*{1ex}\bfseries\insertshorttitle{}
    \end{beamercolorbox}%
    \begin{beamercolorbox}[
      wd=0.1\paperwidth, ht=2.25ex, dp=1ex, right]{date in head/foot}%
      \bfseries\insertframenumber{}\hspace*{2ex}
    \end{beamercolorbox}
  }%
  \vskip0pt%
}
\makeatother

%-----------------------------------------------------------------------
%---- preamble-author.tex ----------------------------------------------

\author[Walmes Zeviani $\cdot$ UFPR]{%
      \href{http://leg.ufpr.br/~walmes}{Prof.~Walmes Zeviani} \\
      \href{mailto:walmes@ufpr.br}{\small\tt walmes@ufpr.br}
}

\institute[DEST/UFPR]{
  {Laboratório de Estatística e Geoinformação}\\
  {Departamento de Estatística}\\
  {Universidade Federal do Paraná}}

%-----------------------------------------------------------------------
%---- preamble-chunk.tex -----------------------------------------------

% Knitr.

% ATTENTION: this needs `\usepackage{xcolor}'.
\definecolor{color_line}{HTML}{333333}
\definecolor{color_back}{HTML}{DDDDDD}

% R input.
\ifcsmacro{Highlighting}{
  % Statment if it exists. ------------------
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{
    frame=lines,
    framesep=1ex,
    framerule=0.5pt,
    rulecolor=\color{color_line},
    numbers=right,
    fontsize=\footnotesize,
    baselinestretch=0.75,
    commandchars=\\\{\}}
  % Margens do ambiente `Shaded'.
  % \fvset{listparameters={\setlength{\topsep}{-1em}}}
  \renewenvironment{Shaded}{\vspace{-1ex}}{\vspace{-2ex}}
  }{
  % Statment if it not exists. --------------
}

% R output e todo `verbatim'.
\makeatletter
\def\verbatim@font{\linespread{0.75}\normalfont\ttfamily\footnotesize}
\makeatother

% Cor de fundo e margens do `vertabim'.
\let\oldv\verbatim
\let\oldendv\endverbatim

\def\verbatim{%
  \par\setbox0\vbox\bgroup
  \vspace{-1.5\topsep}
  \oldv
}
\def\endverbatim{%
  \oldendv
  \vspace{-0.9\topsep}
  \egroup\fboxsep0pt
  \noindent{\colorbox{color_back}{\usebox0}}\par
}

%-----------------------------------------------------------------------

\title{Arquivos XML}
\date{}

\begin{document}
\frame{\titlepage}

\begin{frame}{Introdução}

\begin{block}{Motivação}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  XML é uma esquema geral para representar de dados.
\item
  Vários tipos de arquivos são variações de XML.
\item
  É amplamente usado em Web APIs.
\item
  Possui linguagem de consulta própria.
\item
  É um padrão da W3C.
\end{enumerate}

\end{block}

\begin{block}{Objetivos}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Fazer a definição e discutir os principais aspectos do XML.
\item
  Apresentar alguns dialetos XML.
\item
  Dar uma visão geral da estrutura e sintaxe do XML.
\end{enumerate}

\end{block}

\end{frame}

\section{XML}\label{xml}

\begin{frame}{Definição e características}

\begin{itemize}
\tightlist
\item
  XML: \emph{eXtensible Markup Language}.
\item
  Usado para representar dados em diversos formatos.
\item
  Exemplo: tabelas, planilhas, documentos de texto, imagens, estilos de
  citação, etc.
\item
  É tão genérico que pode representar qualquer tipo de dado.
\end{itemize}

\end{frame}

\begin{frame}{Dialetos de XML}

\begin{itemize}
\tightlist
\item
  HTML (\emph{HiperText Markup Language}): páginas de internet.
\item
  KML (\emph{Keyhole Markup Language}): informação geográfica
  tri-dimensional.
\item
  CSL (\emph{Citation Style Language}): referências bibliográficas.
\item
  ODF (\emph{Open Document Format}): documentos de texto, planilha e
  slides, etc.
\item
  SVG (\emph{Scalable Vector Graphics}): formato de imagens vetoriais.
\item
  Epub: publicação/livro eletrônico.
\end{itemize}

\end{frame}

\begin{frame}

\begin{figure}

{\centering \includegraphics[width=8.5cm]{./img/book-xml} 

}

\caption{Fragmento de arquivo XML que contém um catálogo de livros. Fonte: <https://msdn.microsoft.com/en-us/library/ms762271(v=vs.85).aspx>.}\label{fig:unnamed-chunk-2}
\end{figure}

\end{frame}

\begin{frame}

\begin{figure}

{\centering \includegraphics[width=10cm]{./img/Estados-kml} 

}

\caption{Fragmento de arquivo KML que contém as delimitações geográficas dos Estados brasileiros. Fonte: <http://www.gmapas.com/poligonos-ibge/poligonos-estados-do-brasil>.}\label{fig:unnamed-chunk-3}
\end{figure}

\end{frame}

\begin{frame}

\begin{figure}

{\centering \includegraphics[width=9cm]{./img/abnt-csl} 

}

\caption{Fragmento de arquivo CSL que contém as instruções para formatação de referências bibliográficas nas normas da ABNT. Fonte: <https://metodologiaetecnologia.com.br/2011/09/26/mendeley-parte-12-estilos-abnt-vancouver-e-outros/>.}\label{fig:unnamed-chunk-4}
\end{figure}

\end{frame}

\section{Autópsia do XML}\label{autopsia-do-xml}

\begin{frame}{Arquivos XML e dialetos online}

\begin{block}{Exemplos online}

\begin{itemize}
\tightlist
\item
  Catálogo botânico:
  \url{https://www.w3schools.com/Xml/plant_catalog.xml}.
\item
  Catálogo de livros:
  \url{https://msdn.microsoft.com/en-us/library/ms762271(v=vs.85).aspx}.
\item
  Polígonos dos Estados: \url{http://www.gmapas.com/poligonos-ibge}.
\item
  Imagem vetorial:
  \url{https://upload.wikimedia.org/wikipedia/en/2/22/Heckert_GNU_white.svg}.
\end{itemize}

\end{block}

\begin{block}{Embelezadores de XML}

\begin{itemize}
\tightlist
\item
  \url{https://codebeautify.org/xmlviewer}.
\item
  \url{https://jsonformatter.org/xml-viewer}.
\item
  \url{https://countwordsfree.com/xmlviewer}.
\end{itemize}

\end{block}

\end{frame}

\begin{frame}[fragile]{Essencial de XML}

\begin{itemize}
\tightlist
\item
  A unidade básica é o \textbf{elemento} ou \textbf{nó} (\emph{node}).
\item
  O elemento é começa e termina com a \textbf{tag nomeada}.

  \begin{itemize}
  \tightlist
  \item
    \texttt{\textless{}title\textgreater{}Os\ Três\ Mosqueteiros\textless{}/title\textgreater{}}.
  \item
    \texttt{\textless{}BOTANICAL\textgreater{}Eschscholzia\ californica\textless{}/BOTANICAL\textgreater{}}.
  \end{itemize}
\item
  O \textbf{par de tags} delimita o conteúdo do elemento.
\item
  O conteúdo de um elemento pode ser outros elementos.
\item
  Um elemento sempre tem nome.
\item
  Um elemento pode ter \textbf{atributos}.
\item
  Atributos são do tipo \texttt{campo\ =\ "valor"}.
\end{itemize}

\end{frame}

\begin{frame}{Estrutura do XML}

\begin{itemize}
\tightlist
\item
  Elementos podem conter elementos \(\rightarrow\) \textbf{estrutura
  hierárquica}.
\item
  Atributos registram \textbf{metadados} ou informações sobre os dados.
  Ex: estampa de tempo, classe, id.
\item
  Capaz de representar \textbf{estruturas complexas} de dados.
\item
  A estrutura se assemelha a de árvore.
\item
  Embora muito verboso, a \textbf{taxa de compressão} é boa.
\end{itemize}

\end{frame}

\begin{frame}[fragile]{Regras}

\begin{itemize}
\tightlist
\item
  Sempre ter um elemento raíz, declaração e instruções de processamento.
\item
  Os elementos devem estar apropriadamente aninhados.
\item
  As tags são \emph{case sensitive}.
\item
  Tags devem ocorrer aos pares ou ser auto contida.

  \begin{itemize}
  \tightlist
  \item
    \texttt{\textless{}img\ src="image.png"\textgreater{}\textless{}/img\textgreater{}}
  \item
    \texttt{\textless{}img\ src="image.png"/\textgreater{}}
  \end{itemize}
\item
  Atributos são sempre na \emph{tag} de abertura.
\item
  Não usar espaços nas estremidades das tags.
\item
  Atributos são no formato \texttt{campo\ =\ "valor"}.

  \begin{itemize}
  \tightlist
  \item
    O valor deve estar entre aspas.
  \item
    Nome do atributo devem ser único no elemento.
  \end{itemize}
\item
  Nomes dos elementos podem iniciar com \texttt{{[}\_A-Za-z{]}}.
\item
  O sinal de \texttt{:} é reservado para \emph{namespaces}.
\item
  A palavra \texttt{xml} é reservada, não pode ser usada.
\item
  Os caracteres \texttt{\&}, \texttt{\textless{}} e
  \texttt{\textgreater{}} como valor devem ser codificados.
\end{itemize}

\end{frame}

\begin{frame}{Pontos contra o XML}

\begin{itemize}
\tightlist
\item
  Por causa das tags nomeadas, o XML muito verboso.
\item
  XML é texto pleno e \emph{human-readable}.
\item
  Ferramentas de visualização e edição são muito desejáveis.
\item
  Veja os embelezadores online de XML.
\item
  Editores de texto geral conseguem \enquote{embelezar} arquivos XML.
\end{itemize}

\end{frame}

\section{Estrutura hierárquica}\label{estrutura-hierarquica}

\begin{frame}{Modelo de árvore}

\begin{itemize}
\tightlist
\item
  O modelo de \textbf{árvore} é útil para processamento e navegação.
\item
  Um dos mecanismos de parsing é o \textbf{DOM} (\emph{Document Object
  Model}).
\item
  O DOM analisa (\emph{parsing}) o XML e cria uma estrutura em forma de
  árvore que representa o documento.
\item
  Com a estrutura criada é possível caminhar e extrair conteúdo de forma
  simples.
\item
  A linguagem \textbf{XPath} é usada para fazer consulta no DOM.
\end{itemize}

\end{frame}

\begin{frame}{Terminologia}

\begin{itemize}
\tightlist
\item
  Elementos são nós da árvore.
\item
  Conexões são ramos da árvore.
\item
  Relação entre nós expressa por relações famíliares.
\item
  \emph{root}: nó raíz, o mais alto e origem da árvore.
\item
  \emph{branch}: ramo que conecta dois nós.
\item
  \emph{parent/child}: relação de parentesco entre nós onde
  \emph{parent} é o que está mais próximo da origem.
\item
  \emph{ancestor/decendent}: relações de parentesco verticais entre nós
  separados por outros nós.
\item
  \emph{sibling}: relação horizontal, nós que possuem o mesmo
  \emph{parent}.
\item
  \emph{leaf nodes} ou terminais: nós que não possuem \emph{child}.
\item
  Profundidade é a distância com relação ao \emph{root} em número de
  conexões.
\end{itemize}

\end{frame}

\begin{frame}

\begin{figure}

{\centering \includegraphics[width=9cm]{./img/xml-tree} 

}

\caption{Exemplo de arquivo XML em forma de árvore. Fonte: MUNZERT et al. (2015), página 47.}\label{fig:unnamed-chunk-5}
\end{figure}

\end{frame}

\begin{frame}

\begin{figure}

{\centering \includegraphics[width=9cm]{./img/node-relations} 

}

\caption{Relações familiares entre nós de um arquivo XML com a representação DOM. Fonte: MUNZERT et al. (2015),  página 87.}\label{fig:unnamed-chunk-6}
\end{figure}

\end{frame}

\begin{frame}{Resumo}

\begin{itemize}
\tightlist
\item
  XML é um padrão de representação com estrutura geral para descrever
  conteúdo diverso.
\item
  O XML emprega um esquema para especificar elementos, atributos e
  conteúdo em organização hierárquica.
\item
  É capaz de representar diversos tipos de dados.
\item
  Existem vários dialetos XML.
\item
  Um arquivo XML tem estrutura de árvore.
\item
  A posição relativa entre os nós emprega terminologia de árvore
  genealógica.
\end{itemize}

\end{frame}

\begin{frame}{Referências}

\hypertarget{refs}{}
\hypertarget{ref-munzert2015automated}{}
MUNZERT, S.; RUBBA, C.; MEIßNER, P.; NYHUIS, D. \textbf{Automated data
collection with R: A practical guide to web scraping and text mining}.
Wiley, 2015.

\end{frame}

\end{document}
