diff --git a/xml/filtrar-dados-xml/.gitignore b/xml/filtrar-dados-xml/.gitignore
new file mode 100644
index 0000000..814982c
--- /dev/null
+++ b/xml/filtrar-dados-xml/.gitignore
@@ -0,0 +1,148 @@
+# Visual Code
+.project
+.vscode/
+.classpath
+.settings/
+
+/reports
+/bin
+/target
+target/
+.idea/
+*.iml
+.metadata/
+RemoteSystemsTempFiles/
+Servers/
+*.log
+*.log*
+nohup.out
+.DS_Store
+*.orig
+tmp.txt
+*.hprof
+tmp.txt
+ca.uhn.fhir.jpa.entity.ResourceIndexedSearchParamString/
+ca.uhn.fhir.jpa.entity.ResourceTable/
+
+# Vagrant stuff.
+.vagrant
+/vagrant/build
+/vagrant/chef/tmp
+jpaserver_derby_files
+
+
+# Created by https://www.gitignore.io
+
+### Java ###
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.class
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+
+### Maven ###
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+
+
+### Vim ###
+[._]*.s[a-w][a-z]
+[._]s[a-w][a-z]
+*.un~
+Session.vim
+.netrwhist
+*~
+
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
+
+*.iml
+
+## Directory-based project format:
+.idea/
+# if you remove the above rule, at least ignore the following:
+
+# User-specific stuff:
+.idea/workspace.xml
+
+.idea/dataSources.ids
+.idea/dataSources.xml
+.idea/sqlDataSources.xml
+.idea/dynamic.xml
+.idea/uiDesigner.xml
+
+# Mongo Explorer plugin:
+.idea/mongoSettings.xml
+
+## File-based project format:
+*.ipr
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+
+
+### Eclipse ###
+*.pydevproject
+.metadata
+.gradle
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.loadpath
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# CDT-specific
+.cproject
+
+# JDT-specific (Eclipse Java Development Tools)
+#.project
+#.settings/
+#.classpath
+
+# PDT-specific
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# TeXlipse plugin
+.texlipse
diff --git a/xml/filtrar-dados-xml/.travis.yml b/xml/filtrar-dados-xml/.travis.yml
new file mode 100644
index 0000000..9594f75
--- /dev/null
+++ b/xml/filtrar-dados-xml/.travis.yml
@@ -0,0 +1,10 @@
+language: java
+
+script:
+ - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar -Dsonar.organization="kyriosdata-github" -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN
+cache:
+ directories:
+ - "$HOME/.m2/repository"
+ - "$HOME/.sonar/cache"
+jdk:
+ - openjdk10
diff --git a/xml/filtrar-dados-xml/CONTRIBUTING.md b/xml/filtrar-dados-xml/CONTRIBUTING.md
new file mode 100644
index 0000000..fd214ec
--- /dev/null
+++ b/xml/filtrar-dados-xml/CONTRIBUTING.md
@@ -0,0 +1,5 @@
+# Como contribuir
+
+1. Faça um _fork_
+1. Crie um _branch_ específico para a sua contribuição. O nome do _branch_ deve estar no formato _issue/32_. Onde _32_ é o identificador único da _issue_ que está sendo contemplada pela contribuição.
+1. Assine a Licença do Acordo de Contribuição.
diff --git a/xml/filtrar-dados-xml/Dockerfile b/xml/filtrar-dados-xml/Dockerfile
new file mode 100644
index 0000000..71482dc
--- /dev/null
+++ b/xml/filtrar-dados-xml/Dockerfile
@@ -0,0 +1,5 @@
+FROM fabric8/java-alpine-openjdk8-jre
+
+ENTRYPOINT ["/usr/bin/java", "-jar", "/app.jar"]
+
+ADD target/api.jar /app.jar
diff --git a/xml/filtrar-dados-xml/Dockerfile.jdk11 b/xml/filtrar-dados-xml/Dockerfile.jdk11
new file mode 100644
index 0000000..6568fa9
--- /dev/null
+++ b/xml/filtrar-dados-xml/Dockerfile.jdk11
@@ -0,0 +1,5 @@
+FROM kyriosdata/jdk11
+
+ENTRYPOINT ["java", "-jar", "/app.jar"]
+
+ADD target/api.jar /app.jar
diff --git a/xml/filtrar-dados-xml/README.md b/xml/filtrar-dados-xml/README.md
new file mode 100644
index 0000000..47af807
--- /dev/null
+++ b/xml/filtrar-dados-xml/README.md
@@ -0,0 +1,302 @@
+[![Build Status](https://travis-ci.com/kyriosdata/exemplo.svg)](https://travis-ci.com/kyriosdata/exemplo)
+[![SonarCloud Status](https://sonarcloud.io/api/project_badges/measure?project=com.github.kyriosdata%3Aexemplo&metric=alert_status)](https://sonarcloud.io/dashboard?id=com.github.kyriosdata%3Aexemplo)
+[![Known Vulnerabilities](https://snyk.io/test/github/kyriosdata/exemplo/badge.svg?targetFile=pom.xml)](https://snyk.io/test/github/kyriosdata/exemplo?targetFile=pom.xml)
+[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.kyriosdata/exemplo/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.kyriosdata/exemplo)
+
+# Escopo e objetivo
+_Organizaço de código de referência para desenvolvimento de software em Java_.
+
+Esta organização inclui um conjunto "completo" de ferramentas, já configuradas, para o desenvolvimento
+empregando Java.
+
+O projeto inclui:
+(a) uma biblioteca formada por um único método que identifica o dia da semana para uma data fornecida;
+(b) uma aplicação que oferece tal funcionalidade via linha de comandos e (c) uma RESTFul API ambas para acesso à funcionalidade da biblioteca.
+
+> _Objetivo: ilustrar uma organização de código em Java usando
+"boas práticas" para inspirar projetos reais_.
+
+## Iniciando...
+
+- `git clone https://github.com/kyriosdata/exemplo`
+- `cd exemplo`
+
+Agora você poderá executar os vários comandos abaixo.
+
+## Pré-requisitos
+- `mvn --version`
+você deverá ver a indicação da versão do Maven instalada e
+a versão do JDK, dentre outras. Observe que o JDK é obrigatório, assim como
+a definição das variáveis de ambiente **JAVA_HOME** e **M2_HOME**.
+
+## Limpar, compilar, executar testes de unidade e cobertura
+- `mvn clean`
+remove diretório _target_
+
+- `mvn compile`
+compila o projeto, deposita resultados no diretório _target_
+
+- `mvn test`
+executa todos os testes do projeto. Para executar apenas parte dos testes, por exemplo,
+aqueles contidos em uma dada classe execute `mvn -Dtest=NomeDaClasseTest test`. Observe
+que o sufixo do nome da classe de teste é `Test` (padrão recomendado). Para executar um
+único teste `mvn -Dtest=NomeDaClasseTest#nomeDoMetodo test`.
+
+- `mvn verify -P cobertura`
+executa testes de unidade e produz relatório de
+cobertura em _target/site/jacoco/index.html_ além de verificar se limite mínimo
+de cobertura, conforme configurado, é satisfeito.
+
+## Empacotando o projeto
+- `mvn package`
+gera arquivo _exemplo.jar_ no diretório _target_. Observe que
+o arquivo gerado não é executável. Um arquivo jar é um arquivo no formato
+zip. Você pode verificar o conteúde deste arquivo ao executar o comando `jar vft exemplo.jar`.
+
+- `mvn package -P executavel-dir`
+gera _exemplo-dir.jar_, executável, mas dependente do diretório _jars_,
+ também criado no diretório _target_. Para executar basta o comando
+ `java -jar target/exemplo-dir.jar`. Observe que se o diretório _jars_ for
+ removido, então este comando falha. Por último, o diretório _jars_ deve
+ ser depositado no mesmo diretório do arquivo _exemplo.jar_.
+
+- `mvn package -P executavel-unico`
+ gera jar executável correspondente ao aplicativo a ser executado via linha de comandos,
+ em um único arquivo, _target/exemplo-unico.jar_,
+ suficiente para ser transferido e executado. Para executá-lo basta o
+ comando `java -jar target/exemplo-unico.jar`.
+
+ - `mvn package -P api`
+ gera jar executável juntamente com todas as dependências reunidas em um único arquivo,
+ _target/api.jar_. Este arquivo jar pode ser transferido para outro diretório
+ ou máquina e ser executado pelo comando `java -jar target/api.jar`. A execução e exemplos
+ de chamadas são fornecidos na seção seguinte.
+
+## Executando a aplicação e a RESTFul API
+- `mvn exec:java -Dexec.mainClass="nome.completo.Classe" -Dexec.args="arg1 arg2"`
+executa o método _main_ da classe indicada na configuração do _plugin_ pertinente
+no arquivo pom.xml. Depende de `mvn compile`.
+
+- `java -jar target/exemplo-unico.jar`
+executa o aplicativo por meio do arquivo jar criado pelo comando `mvn package
+ -P executavel-unico`, conforme comentado anteriormente. Observe que o comando
+ anterior e o corrente produzem o mesmo efeito, contudo, o arquivo jar
+ permite que seja enviado para um outro diretório ou outro computador,
+ onde pode ser executado, enquanto o comando anterior (acima) exige,
+ inclusive, a disponibilidade do Maven (o que pode ser útil em tempo de
+ desenvolvimento).
+
+- `java -jar target/api.jar` ou ainda `mvn spring-boot:run`
+coloca em execução a API gerada por `mvn package -P api` na porta padrão (8080). Para fazer uso de porta
+diferente use `java -jar -Dserver.port=9876 target/api.jar`, por exemplo. Requisições podem ser
+submetidas conforme abaixo:
+ - Abra o endereço _http://localhost:8080/ds_ no seu navegador, ou forneça
+ a seguinte URL para um dia específico
+ _http://localhost:8080/ds?data=01-01-2015_.
+ - Via linha de comandos (curl), `curl http://localhost:8080/ds` ou `curl
+ http://localhost:8080/ds?data=01-01-200`.
+ - Página HTML (há uma interface gráfica) no diretório **gui**, basta abrir
+ o arquivo [index.html](http://htmlpreview.github.com/?https://raw.githubusercontent.com/kyriosdata/exemplo/master/gui/index.html).
+
+
+## Documentação
+
+- `mvn javadoc:javadoc`
+produz documentação do projeto depositada em
+_target/site/apidocs/index.html_. Este comando está configurado para
+o JDK 9.
+
+## Análise estática
+Trata-se da análise do código sem que seja executado. Esta análise produz
+uma "noção de quão bom" está o código sob alguns aspecto e, em consequência,
+permite orientar eventuais ações de melhoria. Fique atento, "sair
+bem" na análise estática não significa que "agrada usuários". A análise
+estática observa o código.
+
+Todas estas análises devem ser realizadas em todos os projetos? Não!
+Aquelas relevantes para um dado projeto deverão ser
+configuradas em conformidade com o contexto em questão.
+
+- **Checkstyle**
+ - `mvn checkstyle:checkstyle`
+ gera análise de estilo em _target/site/checkstyle.html_.
+ Observe que o uso do plugin
+ **jxr** é necessário para geração de relatório do código fonte referenciável
+ pelo relatório gerado pelo Checkstyle. Contudo, o uso do **jxr** não é
+ obrigatório.
+
+ - `mvn checkstyle:check`
+ faz com que o _build_ falhe se pelo menos
+um estilo é violado
+
+- **Dependency Check (vulnerabilidades)**
+ - `mvn verify -P owasp`
+ análise de vulnerabilidades depositadas em
+ _target/dependency-check-report.html_. A primeira execução é relativamente
+ "longa", esteja preparado para esperar...
+
+- **JavaNCSS**
+ - `mvn javancss:check`
+ verifica limites de complexidade ciclomática (CC) e de linhas
+ de código sem comentário (NCSS). Este comando depende da compilação
+prévia, ou seja _mvn compile_
+
+ - `mvn javancss:report`
+ gera relatório em _target/site/javancss.html_ e
+também depende de compilação prévia, ou seja, _mvn compile_
+
+- **JDepend**
+ - `mvn jdepend:generate`
+ gera relatório de algumas métricas, inclusive presença de ciclos em _target/site/jdepend-report.html_
+
+- **PMD**
+ - `mvn jxr:jxr pmd:pmd`
+ gera relatório em _target/site/pmd.html_. Observe que o uso do plugin
+ **jxr** é necessário para geração de relatório do código fonte referenciável
+ pelo relatório perado pelo PMD. Contudo, o uso do **jxr** não é obrigatório.
+
+ - `mvn pmd:check`
+ falha se pelo menos uma regra é violada
+
+ - `mvn jxr:jxr pmd:cpd`
+ gera relatório de duplicidades encontradas. Observe que o uso do plugin
+ **jxr** é necessário para geração de relatório do código fonte referenciável
+ pelo relatório gerado pelo PMD. Contudo, o uso do **jxr** não é obrigatório.
+
+- **Spotbugs**
+ - `mvn spotbugs:spotbugs`
+ detecção de bugs
+ - `mvn spotbugs:check`
+ apenas verifica se há erros
+ - `mvn spotbugs:gui`
+ abre GUI para exibir bugs após _mvn spotbugs:spotbugs_
+
+- **Spotbugs** (security)
+ - `mvn spotbugs:spotbugs -P security`
+ detecção de bugs
+ - `mvn spotbugs:check -P security`
+ apenas verifica se há erros
+ - `mvn spotbugs:gui -P security`
+ abre GUI para exibir bugs após _mvn spotbugs:spotbugs -P security_
+
+- **Snyk**
+
+ - `mvn snyk:test -P security`
+ análise de vulnerabilidade oferecida pelo serviço [Snyk](https://snyk.io).
+ A propriedade _snyk.token_ deve estar definida no arquivo
+ _$HOME/.m2/settings.xml_, conforme ilustrado abaixo. Alternativamente,
+ por conveniência, o valor pode ser fornecido via linha de comandos,
+ **-Dsnyk.token=API-TOKEN** (neste caso não é necessária a definição no
+ arquivo _settings.xml_.
+ ```xml
+
+
+
+
+ true
+
+
+ API-TOKEN AQUI
+
+
+
+
+ ```
+
+
+ - `mvn snyk:monitor -P security`
+ Disponibiliza relatório em snyk.io (atualiza _badge_)
+
+## Relatório do projeto
+- `mvn package site -P cobertura`
+Gera documentação do projeto, incluindo relatórios de análises estáticas em
+_target/site/index.html_.
+
+- `mvn site:run` executa serviço que disponibiliza em http://localhost:8080 a
+documentação gerada no passo anterior.
+
+## Disponibilizando biblioteca no repositório Maven Central
+A boa notícia é que este _pom.xml_ está devidamente configurado para
+publicação no Maven Central, contudo, depende de outras ações e da
+configuração do arquivo _HOMEDIR/.m2/settings.xml_.
+
+- **Nexus Staging Maven Plugin**
+ - `mvn deploy -P deploy`
+
+Particularmente considero a publicação usando o Maven Central mais
+complexa do que a alternativa recente oferecida pelo [JitPack](https://jitpack.io),
+uma alternativa.
+
+## Dependências
+O desenvolvimento de código em Java, em geral, usufrui de um significativo conjunto de bibliotecas e _frameworks_. Esta
+reutilização é incorporada em um projeto por meio de dependências. Gerenciá-las
+torna-se necessário e há dois _plugins_ úteis para tal. Consulte a documentação deles
+para outros além daqueles ilustrados abaixo: Version Maven Plugin ([aqui](http://www.mojohaus.org/versions-maven-plugin/)) e Apache Maven Dependency Plugin ([aqui](https://maven.apache.org/plugins/maven-dependency-plugin/)).
+
+- `mvn versions:display-dependency-updates`
+Lista dependências para as quais há versões mais recentes do que aquelas empregadas.
+
+- `mvn versions:display-plugin-updates`
+Lista _plugins_ para as quais há versões mais recentes do que aquelas empregadas.
+
+- `mvn dependency:analyze`
+Analisar as dependências de um projeto. Dependência citada mas não utilizada, dentre
+outras situações são relatadas por meio desta análise.
+
+- `mvn dependency:purge-local-repository`
+limpa dependências do projeto em questão do repositório local e obtém dependências novamente. Útil quando o repositório local é corrompido.
+
+- `mvn dependency:copy-dependencies`
+Copia dependências do projeto para o diretório **target/dependency**.
+
+## Banco de Dados H2 (bônus)
+Dado o cenário "comum" no qual aplicações em Java fazem uso de um banco
+relacional, aqui são oferecidos recursos para desenvolvimento usando o
+H2 (https://www.h2database.com).
+
+- `mvn exec:java -P start-shell-h2`
+ Abre/cria banco para uso via linha de comandos.
+ Para criar o banco de nome `bancoNome` no diretório `dir` forneça
+ `jdbc:h2: