Domain specific language generation based on a XML schema

Detalhes bibliográficos
Autor(a) principal: Duarte, Luís Carlos da Silva
Data de Publicação: 2019
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10400.21/9682
Resumo: Dissertação para obtenção do grau de mestre em Engenharia Informática e de Computadores
id RCAP_27dcef1b43ec7ff3e30add32127ead1b
oai_identifier_str oai:repositorio.ipl.pt:10400.21/9682
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Domain specific language generation based on a XML schemaXMLeXtensive markup languageXSDeXtensive markup language schema definitionAutomatic code generationGeração automática de códigoFluent interfaceInterface fluenteDomain specific language.Linguage specífica de domínioDissertação para obtenção do grau de mestre em Engenharia Informática e de ComputadoresThe use of markup languages is recurrent in the world of technology, with HyperText Markup Language (HTML) being the most prominent one due to its use in theWeb. The requirement of tools that can automatically build well formed documents with good performance is clear. Yet, the most used solution is template engines, which neither ensures well-formed documents nor presents good performance, due to the use of external text files. To tackle the first issue we propose to define HTML templates as first-class functions instead of using text files. To that end, these HTML template functions use a Java Domain Specific Language (DSL) to write HTML. Our main goal is to create the required tools that automatically generate that DSL based on its language definition from an eXtensive Markup Language Schema Definition (XSD) file. The resulting DSL should enforce the restrictions of the given language which are specified in the XSD file. By removing the use of text files we are also suppressing the file load overhead and reducing String manipulation, which in turn increases the overall performance and solves the second issue. My proposal, named xmlet, includes a set of tools that are able to: 1) parse and extract the rules from a XSD file, 2) generate the adequate classes and methods to define the DSL that reflects the language rules, 3) handle the use of the resulting DSL through the implementation of the Visitor pattern. Finally we validated this solution not only for the HTML language, but also with the Android layouts and the regular expressions languages. By comparing the developed solution to some state-of-art solutions, including template engines and some other solutions with specific innovations, we obtained very favorable results with the suggested solution being the best performancewise in all the tests we performed. These results are important, specially considering that apart from being a more efficient solution it also introduces validations of the language usage based on its syntax definition.Actualmente a utilização de linguagens de markup é recorrente no mundo da tecnologia, sendo o HTML a linguagem mais utilizada graças à sua utilização no mundo da Web. Tendo isso em conta é necessário que existam ferramentas capazes de escrever documentos bem formados de forma eficaz. No entanto, a abordagem mais utilizada, template engines, tem dois problemas principais: 1) não garante a geração de documentos bem formados, 2) não garante um bom desempenho, devido à utilização de ficheiros de texto como ficheiros de template. Para resolver o primeiro problema propomos que um template HTML passe a ser definido como uma first-class function. Para isto é necessário criar uma linguagem específica de domínio para que estas funções possam manipular a linguagem HTML. O nosso objectivo principal é criar as ferramentas necessárias para gerar linguagens específicas de domínio com base no ficheiro de definição da linguagem, explícito num ficheiro XSD. A linguagem de domínio gerada deve também garantir que as restrições da respectiva linguagem são verificadas. Removendo os ficheiros textuais que definem templates minimizam-se também os problemas de desempenho introduzidos pelo carregamento de ficheiros de texto e reduzem-se o número de operações sobre Strings. A minha proposta, chamada xmlet, inclui ferramentas que possibilitam: 1) a análise e a extração de informação de um ficheiro XSD, 2) a geração de classes e métodos que definem uma linguagem específica de domínio que reflete as regras presentes no ficheiro XSD, 3) a abstração da utilização da linguagem de domínio gerada, com a utilização do padrão Visitor. Para validar esta solução criaram-se linguagens de domínio não só para HTML como também para a linguagem utilizada para definir layouts visuais para Android e para a linguagem das expressões regulares. Comparando a solução desenvolvida com soluções semelhantes, incluindo template engines e algumas soluções com inovações face à abordagem dos template engines, obtemos resultados favoráveis. Verificamos que a solução sugerida é a mais eficiente em todos os testes feitos. Estes resultados são importantes, especialmente considerando que apesar de ser a solução mais eficiente introduz também a verificação das restrições da linguagem utilizada tendo em conta a sua definição sintática.Instituto Superior de Engenharia de LisboaCarvalho, Fernando Miguel Gamboa deRCIPLDuarte, Luís Carlos da Silva2019-03-07T20:28:43Z2019-02-012019-02-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.21/9682TID:202186300engDUARTE, Luís Carlos da Silva - Domain specific language generation based on a XML schema. Lisboa: Instituto Superior de Engenharia de Lisboa, 2019. Dissertação de mestrado.info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-08-03T09:58:39Zoai:repositorio.ipl.pt:10400.21/9682Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T20:18:12.590651Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Domain specific language generation based on a XML schema
title Domain specific language generation based on a XML schema
spellingShingle Domain specific language generation based on a XML schema
Duarte, Luís Carlos da Silva
XML
eXtensive markup language
XSD
eXtensive markup language schema definition
Automatic code generation
Geração automática de código
Fluent interface
Interface fluente
Domain specific language.
Linguage specífica de domínio
title_short Domain specific language generation based on a XML schema
title_full Domain specific language generation based on a XML schema
title_fullStr Domain specific language generation based on a XML schema
title_full_unstemmed Domain specific language generation based on a XML schema
title_sort Domain specific language generation based on a XML schema
author Duarte, Luís Carlos da Silva
author_facet Duarte, Luís Carlos da Silva
author_role author
dc.contributor.none.fl_str_mv Carvalho, Fernando Miguel Gamboa de
RCIPL
dc.contributor.author.fl_str_mv Duarte, Luís Carlos da Silva
dc.subject.por.fl_str_mv XML
eXtensive markup language
XSD
eXtensive markup language schema definition
Automatic code generation
Geração automática de código
Fluent interface
Interface fluente
Domain specific language.
Linguage specífica de domínio
topic XML
eXtensive markup language
XSD
eXtensive markup language schema definition
Automatic code generation
Geração automática de código
Fluent interface
Interface fluente
Domain specific language.
Linguage specífica de domínio
description Dissertação para obtenção do grau de mestre em Engenharia Informática e de Computadores
publishDate 2019
dc.date.none.fl_str_mv 2019-03-07T20:28:43Z
2019-02-01
2019-02-01T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10400.21/9682
TID:202186300
url http://hdl.handle.net/10400.21/9682
identifier_str_mv TID:202186300
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv DUARTE, Luís Carlos da Silva - Domain specific language generation based on a XML schema. Lisboa: Instituto Superior de Engenharia de Lisboa, 2019. Dissertação de mestrado.
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Instituto Superior de Engenharia de Lisboa
publisher.none.fl_str_mv Instituto Superior de Engenharia de Lisboa
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799133445836767232