Extensible Stylesheet Language (XSL) Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Introdução XSL é a linguagem para expressar folhas de estilo. Descreve como um documento XML deve ser apresentado. XSL Consiste de três partes: XSLT (XSL Transformation) – uma linguagem para transformar documentos XML. XPath – uma linguagem para definir partes de um documento XML. XSL Formatting Objects – um vocabulário para formatar documentos XML. Esclarecendo... Pense em XML com sendo uma linguagem que: Pode transformar XML em XHTML. Pode filtrar e classificar dados XML. Define partes de um documento XML. Pode formatar dados XML com base nos valores dos dados, como mostrar valores negativos em vermelho. Pode exibir dados XML em diferentes dispositivos, como tela, papel ou voz. XSLT e XPath XSLT será utilizada para definir as transformações XML. XPath será utilizada para definir padrões compatíveis para as tranformações. XSLT É utilizada para transformar documentos XML em outros documentos XML , ou em outro tipo de documento que é reconhecido por um browser. Pode acrescentar ou remover elementos ao arquivo de saída, re-arranjar os elementos, e tomar decisões sobre quais elementos apresentar ou não. XSLT – Como funciona? Utiliza a XPath para definir as partes do documento fonte que “casam” com um ou mais templates pré-definidos. XSLT transforma a parte que “casou” do documento fonte em um documento resultante. Browsers e XSL Internet Explorer (IE): As versões IE 5 e IE 5.5 não são 100% compatíveis com a recomendação oficial W3C da XSL. O IE 6 é completamente compatível com a recomendação oficial. Netscape: O Netscape 6 não oferece suporte completo para a recomendação oficial W3C da XSL. XSL-Transformation (XSLT) Maneiras corretas de se declarar uma folha de estilo XSL: ou Tranformando um documento XML em XHTML O documento XML... (cdcatalog.xml) <?xml version=“1.0” encoding=“ISO-8859-1”?> <catalog> <cd> <title>How The West Was Won</title> <artist> Led Zeppelin </artist> <company> Warner </company> <price> 61,90 </price> <year> 2003 </year> </cd> </catalog> A folha de estilo XSL... (cdcatalog.xsl) Ligando a folha de estilo XSL ao documento XML <?xml version=“1.0” encoding=“ISO-8859-1”?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog> <cd> <title>How The West Was Won</title> <artist> Led Zeppelin </artist> <company> Warner </company> <price> 61,90 </price> <year> 2003 </year> </cd> </catalog> Explicando... <xsl:template> (1/2) Uma folha de estilo XSL consiste de um conjunto de regras chamadas templates. O elemento <xsl: template> contém regras a serem aplicadas quando um nó específico “casa”. O atributo match é utilizado para associar o template com um elemento XML. <xsl:template> (2/2) match = “/” associa um template à raiz do documento XML fonte <xsl:value-of> O elemento <xsl:value-of> pode ser usado para selecionar o valor de um elemento XML e o apresentar na saída da transformação. Exemplo: <xsl: value-of select=“catalog/cd/title”/> <xsl: value-of select=“catalog/cd/artist”/> <xsl:for-each> (1/2) O elemento <xsl:for-each> permite realizar loops na XSL. Pode ser utilizado para selecionar todo elemento XML de um conjunto de nós específicos. Exemplo: <xsl:for-each select=“catalog/cd”> <xsl:value-of select=“title”/> <xsl:value-of select=“artist”/> </xsl:for-each> <xsl:for-each> (2/2) Pode-se filtrar a saída acrescentando um critério ao atributo selecionado no elemento <xsl:for-each>: <xsl:for-each select=“catalog/cd[artist=‘Led Zeppelin’]”> Operadores de filtro: = (igual) != (diferente) < (menor que) > (maior que) <xsl:sort> O elemento <xsl:sort> é utilizado para ordenar a saída. Exemplo: <xsl:for-each select=“catalog/cd”> <xsl:sort select=“artist”/> <xsl:value-of select=“title”/> <xsl:value-of select=“artist”/> </xsl:for-each> <xsl:if> O elemento <xsl:if> contém um template que será aplicado somente se uma condição específica for verdadeira. Exemplo: <xsl:for-each select=“catalog/cd”> <xsl:if test=“price > 30”/> <xsl:value-of select=“title”/> <xsl:value-of select=“artist”/> </xsl:if> </xsl:for-each> <xsl:choose> (1/2) O elemento <xsl:choose> é usado em conjunto com <xsl:when> e <xsl:otherwise> para expressar múltiplos testes condicionais. <xsl:choose> (2/2) Exemplo: <xsl:for-each select="catalog/cd"> <xsl:value-of select="title"/> <xsl:choose> <xsl:when test="price > 30"> <xsl:value-of select="artist"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="company"/> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:apply-templates> O elemento <xsl:apply-templates> aplica uma regra de template ao elemento atual ou aos seus nós filhos. Exemplo: Próximo slide