200 likes | 307 Views
Ambientes de Desenvolvimento XML DOM-XSL-XSD. Paulo Sousa ISEP/IPP Portugal. Conteúdo. XML DOM XSL XSD. Tecnologias XML. Um conjunto de tecnologias para representação e manipulação de dados (essencialmente) para sistemas desenvolvidos sobre a Internet Quase na totalidade normas W3C.
E N D
Ambientes de DesenvolvimentoXML DOM-XSL-XSD Paulo Sousa ISEP/IPP Portugal
Conteúdo • XML DOM • XSL • XSD XML DOM-XSL-XSD
Tecnologias XML • Um conjunto de tecnologias para representação e manipulação de dados (essencialmente) para sistemas desenvolvidos sobre a Internet • Quase na totalidade normas W3C XML DOM-XSL-XSD
XSL • XSL = eXtensible Stylesheet Language • XSL-T (Transform) • Permite a transformação de dados XML para outro formato • XSL-FO (Formating Objects) • Permite a criação de objectos de formatação de elementos XML (por exemplo, geração de PDF) XML DOM-XSL-XSD
XSL (2) • Exemplo de documento XSL-T • Geração de HTML para visualização de forma tabular • Utilização de página XSL-T • <?xml-stylesheet type="text/xsl" href=“nome-fich.xsl"?> Code Demo XML DOM-XSL-XSD
XSL (3) • Sintaxe • Indicação de documento XSL-T • <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> • Definição de template • <xsl:template match="critério"> • Ciclo para percorrer todos os elementos • <xsl:for-each select="critério"> • Obter o valor de um elemento/atributo • <xsl:value-of select="nome-elemento"/> • <xsl:value-of select=“@nome-atributo"/> XML DOM-XSL-XSD
XSL (4) • Sintaxe • Ordenação • <xsl:sort select=“nome-elemento" order="ascending" /> • Operadores • < <= > >= and or = != + - * div mod . • Funções • position() count() last() substring() concat() contains() round() sum() • Condições • nome-do-elemento-ou-atributo[condição] • sm[. < 30] XML DOM-XSL-XSD
XSL (5) • Sintaxe • Testes condicionais <xsl:choose> <xsl:when test="sm[. < 3.8]"> <xsl:value-of select="sm"/> </xsl:when> <xsl:when test="sm[. < 4.5]"> <em><xsl:value-of select="sm"/></em> </xsl:when> <xsl:otherwise> <strong><xsl:value-of select="sm"/></strong> </xsl:otherwise> </xsl:choose> Inicio do bloco de decisão Teste condicional Acção a executar Acção por defeito Code Demo XML DOM-XSL-XSD
XSL (6) • Exercícios • Criar um XSL para documento XML de exercício anterior (CDs) para geração de HTML de forma tabular • Visualizar o resultado no browser • Solução Code Demo XML DOM-XSL-XSD
XML DOM • DOM = Document Object Model • Acesso programático a documentos XML • MSXML v3+ • Árvore de nós em que cada nó é um elemento XML DOM-XSL-XSD
XML DOM (2) XML DOM-XSL-XSD
XML DOM (3) • Criar um objecto • ASP (VBScript) • Set oXML = Server.CreateObject("MSXML2.DOMDocument") • Browser (javascript) • var oXML = new ActiveXObject("MSXML2.DOMDocument"); • Inicializar conteúdo a partir de um ficheiro XML • oXML.load(nome-ficheiro) • Inicializar conteúdo a partir de uma string XML • oXML.loadXML(string) XML DOM-XSL-XSD
XML DOM (4) • Obter código de erro • oXML.parseError.errorCode • Conteúdo como string XML (MSXML) • var-string = oXML.documentElement.xml • oXML.documentElement.xml = string • Referência para nó raíz • oNodo = oXML.documentElement • oXML.documentElement = objecto-nodo • Aplicar transformação XSL • var-string = oXML.transformNode(objecto-XSL) XML DOM-XSL-XSD
XML DOM (5) • Criar um novo nó • objecto-nodo = oXML.createElement("nome-elemento") • objecto-outro-nodo = objecto-nodo.cloneNode(deep) • Conteúdo de um nó • var-string = objecto-nodo.nodeValue • objecto-nodo.nodeValue = string • Conteúdo de um nó (MSXML) • var-string = objecto-nodo.text • objecto-nodo.text = string XML DOM-XSL-XSD
XML DOM (6) • Adicionar um nó como filho de outro nó • objecto-nodo-pai.appendChild(objecto-nodo-filho) • Colecção de filhos de um nó • objecto-nodo.childNodes • Número de filhos de um nó • objecto-nodo.childNodes.length • Referência ao enésimo filho de um nó • objecto-outro-nodo = objecto-nodo.childNodes(indice) • objecto-nodo.childNodes(indice) = objecto-outro-nodo XML DOM-XSL-XSD
XML DOM (7) • Criar um atributo • objecto-atributo = oXML.createAttribute("nome") • Conteúdo de um atributo • objecto-atributo.nodeValue = string • var-string = objecto-atributo.nodeValue • Colecção de atributos de um nó • objecto-nodo.attributes • Número de atributos de um nó • objecto-nodo.attributes.length XML DOM-XSL-XSD
XML DOM (8) • Referência ao enésimo atributo de um nó • objecto-outro-nodo = objecto-nodo.attributes(indice) • objecto-nodo.attributes(indice) = objecto-outro-nodo • Adicionar um atributo • objecto-nodo.attributes.setNamedItem(objecto-atributo) • objecto-nodo.setAttribute(nome, valor) • Obter valor de um atributo • objecto-nodo.attributes.getNamedItem(nome) • objecto-nodo.getAttribute(nome) XML DOM-XSL-XSD
XML DOM (9) • Exercício • Criar uma página HTML para criar um objecto XML e carregar o ficheiro anterior (CDs) e visualizar a string XML numa janela de diálogo window.alert, aplicar a transformação XSL definida e visualizar o HTML gerado • Criar uma página HTML para criar um objecto XML e adicionar programaticamente um ou dois nó e visualizar o XML correspondente Demo Demo XML DOM-XSL-XSD
XSD XML DOM-XSL-XSD
Onde Obter Mais Informação • Site da W3C http://www.w3c.org/XML/ • Site da Microsoft para programadores http://msdn.microsoft.com/xml • Minha página de Ambientes de Desenvolvimento http://www.dei.isep.ipp.pt/~psousa/aulas/amb-des XML DOM-XSL-XSD