1 / 20

Tecnologias XML

Tecnologias XML. Extensible Stylesheet Language Transformation - XSLT. XSLT. XSL - Extensible Stylesheet Language Linguagem para transformação e formatação de um documento XML XSL deu origem a 3 normas: XPath que define um modo de navegação e localização da informação num documento XML.

Download Presentation

Tecnologias XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tecnologias XML Extensible Stylesheet Language Transformation - XSLT

  2. XSLT • XSL - Extensible Stylesheet Language • Linguagem para transformação e formatação de um documento XML • XSL deu origem a 3 normas: • XPath que define um modo de navegação e localização da informação num documento XML. • XSL-FO ( Formating Objects) que especifica a formatação dos documentos. • XSLT (Transformation) que especifica transformações sobre um documento XML

  3. XSLT • XSLT – Transformações sobre um documento XML ...

  4. Referenciar uma folha de estilos XSLT num XML <?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="catalog.xsl"?><catalog> <book id="12"> <title>Discover Java</title> <Authors> <author>Ed Tittel</author> <author>Bill Brogden</author> </Authors> <publisher>IDG Books Worldwide</publisher> <ISBN>0-7645-8024-8</ISBN> <price>24.99</price> <pubdate>1997</pubdate> </book><book id="23">…</book></catalog> Documento catalog.xsl

  5. Um processador XSLT trabalha sobre uma representação em árvore da estrutura hierárquica de um documento XML output

  6. Exemplo de uma folha de estilos <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/catalog" > <books> <xsl:apply-templates select="book"/> </books> </xsl:template> <xsl:template match="book" > <title_publisher> <xsl:value-of select="title" /> , <xsl:value-of select="publisher" /> </title_publisher> </xsl:template> </xsl:stylesheet> catalog.xml output catalog.xsl

  7. XSLT • Uma folha de estilo XSLT consiste numa série de templates que, conjuntamente com expressões baseadas em XPath, determinam como o processador vai aplicá-las aos nós do documento fonte. • Para cada template, o processador procura no documento o nó que verifica o padrão definido e aplica as acções definidas nesse template • Os templates são instanciados para todos os nós onde é efectuado o match

  8. Análise da folha catalog.xsl • Os documentos XSLT são documentos XML <?xml version="1.0" encoding="ISO-8859-1"?> • A raíz do documento é o elemento xsl:stylesheet <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> • xsl:templateinicia um template com um atributo match que indica os nós a que deve ser aplicado. <xsl:template match="/catalog" > <books> <xsl:apply-templates select="book"/> </books> </xsl:template> Expressão XPath

  9. Análise da folha catalog.xsl • O elemento xsl:apply-templates faz chamada aos outros templates <xsl:apply-templates select="book"/> <xsl:template match="book" > <title_publisher> <xsl:value-of select="title" /> , <xsl:value-of select="publisher" /> </title_publisher> </xsl:template> • Todo o texto que não faz parte do espaço de nomes xsl: fará parte do documento resultado. <title_publisher> … </title_publisher> • xsl:value-of extrai o texto de um nó seleccionado: <title> e <publisher> Extracção de dados do documento de entrada

  10. Navegação na árvore - XPath • O XSLT usa expressões XPath para localizar nós na árvore do documento de entrada • Expressões XPath são usadas nos atributos select e match • Semelhante à navegação numa árvore de directórios • Caminhos absolutos e relativos • Um caminho absoluto começa sempre pelo carácter '/', caso contrário são caminhos relativos ao nó corrente /catalog/book/title - absoluto authors/author - relativo

  11. Navegação na árvore - XPath • Selectores de nós: • Exemplos de selecções de nós

  12. Navegação na árvore - XPath • Predicados (filtros) • Os predicados são filtros para refinar a pesquisa • Os predicados são escritos entre [ ] • Exemplos: /book[@id] - selecciona o nó book se tiver um atributo id /catalog/book[2] - selecciona o segundo nóbook • Funções Xpath number position() – devolve a posição do nó actual book[position()=1] number last() – devolve o índice do ultimo nó no conjunto de nós. book[last()] number count(node-set) – devolve o número de nós do conjunto de nós argumento <xsl:value-of select="count(authors/author)" />

  13. Exemplo de transformação XML - HTML ... <xsl:template match="/catalog" > <html><head><title>XML to HTML </title></head><body> <xsl:apply-templates /> </body></html> </xsl:template> <xsl:template match="book" > <h3><b>Título: <xsl:value-of select="title" /> </b></h3> <h5>Editora: <xsl:value-of select="publisher" /> </h5> </xsl:template> Anotação e Texto para o documento de saida Elementos xsl para extrair informação exemplo catalogtohtml

  14. Elementos XSLT • xsl:for-each define um template que vai ser aplicado a todos os nós seleccionados pela expressão do atributo select. <xsl:template match="/" > <html><body><table border="1"> <xsl:for-each select="catalog/book"> <tr><td> <xsl:value-of select="title" /> </td> <td><xsl:for-each select="authors/author"> <br><xsl:value-of select="." /></br> </xsl:for-each></td> <td> <xsl:value-of select="publisher" /></td> <td> <xsl:value-of select="ISBN" /></td> <td> <xsl:value-of select="price" /></td> <td> <xsl:value-of select="pubdate" /></td> </tr> </xsl:for-each> </table></body></html> </xsl:template> </xsl:stylesheet> resultado catalogfor.xsl

  15. Elementos XSLT • xsl:sort • A ordenação é especificada com elementos xsl:sort como filhos de elementos xsl:apply-templates ou xsl:for-each • A chave de ordenação é especificada pelo atributo select • Pode ser especificada mais de uma chave de ordenação usando vários xsl:sort. <xsl:template match="/" > <html><body><h3>Lista de autores </h3> <xsl:for-each select="catalog/book/authors/author"> <xsl:sort data-type="text" order="ascending" /> <br><xsl:value-of select="." /></br> </xsl:for-each> </body></html> </xsl:template> catalogsort.xsl resultado

  16. Elementos XSLT • xsl:if <xsl:if test=" not(position()=last())" >… <xsl:if test=“ price &lt; < 20 “ >… • Instrução condicional • O atributo test define a expressão a avaliar • Não tem else • xsl:choose (switch) <xsl:choose> <xsl:when test = boolean-expression> … </xsl:when> <xsl:otherwise>… </xsl:otherwise> </xsl:choose> exemplo catalogif.xsl exemplo catalogchoose.xsl

  17. Elementos XSLT • xsl:element • insere elementos na árvore resultado da transformação • O nome do elemento é definido pelo atributo name • xsl:attribute • Insere atributos. O nome do atributo é definido pelo atributoname. • O valor do atributo é determinado pelo conteúdo do template <xsl:template match="/catalog" > <xsl:element name="books"> <xsl:apply-templates select="book"/> </xsl:element> </xsl:template> exemplo catalogelement.xsl

  18. Elementos XSLT • xsl:copy • elemento para criar uma cópia do nó corrente • não copia atributos, nem filhos • xsl:copy-of • copia tudo o que for seleccionado pelo atributo select <xsl:template match="book"> <xsl:copy-of select="."> </xsl:copy-of> exemplo catalogcopy.xsl

  19. Templates por omissão • Quando não existe nenhum template são aplicados templates por omissão. • Template por omissão para nós elemento e raíz: • Template por omissão para nós texto e atributo: <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template> exemplo minimal.xsl

  20. Nova estrutura XML • Criar um novo documento xml com outra estrutura <xsl:template match="/" > <autores> <xsl:apply-templates select="//author" > <xsl:sort select="." /> </xsl:apply-templates> </autores> </xsl:template> <xsl:template match="author" > <xsl:element name="autor"> <xsl:element name="nome"> <xsl:value-of select="." /> </xsl:element> <xsl:element name="obra"> <xsl:attribute name="ISBN" > <xsl:value-of select="../../ISBN" /> </xsl:attribute> <xsl:value-of select="../../title" /> </xsl:element></xsl:element> </xsl:template>... exemplo novaestrutura.xsl

More Related