Manipulação de XML com PHP DOM, XSLT, DTD e XSD

Computação713,83 KB

Data: 03 de janeiro de 2024

4MAAAAASUVORK5CYII=

Criação de Ficheiro XML com PHP DOM

Apresente um script PHP DOM que crie um ficheiro XML (com o nome exercicio2.xml) com o conteúdo apresentado na Figura 1.

<?php
// Cria uma nova instância de DOMDocument
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true; // Formata a saída para melhor legibilidade

// Cria o elemento raiz <shiporder>
$shiporder = $dom->createElement('shiporder', '889923');
$dom->appendChild($shiporder);

// Cria e adiciona o elemento <cliente_nome>
$cliente_nome = $dom->createElement('cliente_nome', 'Carlos Alves');
$dom->appendChild($cliente_nome);

// Cria o elemento <dados> e seus filhos
$dados = $dom->createElement('dados');
$name = $dom->createElement('name', 'Carlos Alves');
$dados->appendChild($name);
$address = $dom->createElement('address', 'Rua de cima, nº1');
$dados->appendChild($address);
$city = $dom->createElement('city', '6000-123 Castelo Branco');
$dados->appendChild($city);
$dom->appendChild($dados);

// Função auxiliar para criar e adicionar um item
function adicionarItem($dom, $titulo, $autor, $quantidade, $preco, $note = null) {
    $item = $dom->createElement('item');
    $title = $dom->createElement('title', $titulo);
    $item->appendChild($title);
    // Um dos dados tem uma nota, o outro não
    if ($note !== null) {
        $noteElement = $dom->createElement('note', $note);
        $item->appendChild($noteElement);
    }
    $author = $dom->createElement('autor', $autor);
    $item->appendChild($author);
    $quantity = $dom->createElement('quant', $quantidade);
    $item->appendChild($quantity);
    $price = $dom->createElement('price', $preco);
    $item->appendChild($price);
    return $item;
}

// Adiciona os itens ao documento
$item1 = adicionarItem($dom, 'Nunca Desistas de TI', 'Susana Teixeira', '3', '10.90', 'Special Edition');
$dom->appendChild($item1);
$item2 = adicionarItem($dom, 'Os Maias', 'Eça de Queirós', '1', '9.90');
$dom->appendChild($item2);

// Salva o XML em um ficheiro
$dom->save('exercicio2.xml');
echo "Arquivo 'exercicio2.xml' criado com sucesso.";
?>

Análise e Transformação XSLT

Atendendo ao ficheiro XSLT apresentado na Figura 2, diga para que serve e qual será o resultado/output se aplicado ao ficheiro apresentado na Figura 1.

KbDF5sDHIjQAAAABJRU5ErkJggg==

Resposta:

O código XSLT apresentado na Figura 2 tem como objetivo transformar um documento XML (como o da Figura 1) em um formato mais legível e estruturado, neste caso, um documento HTML. Essa transformação é frequentemente usada para apresentar dados XML de forma visual e amigável ao utilizador.

OUTPUT: shiporder: 889923, name: Carlos Alves, address: Rua de cima, nº1, city: 6000-123 Castelo Branco, quantidade: 3

Filtragem com Folha de Estilo XSLT

Escreva um script PHP que carregue o ficheiro XML apresentado na Figura 1 e o ficheiro XSLT apresentado na Figura 2, mas com as alterações necessárias para que apresente todos os produtos com “autor” Susana Teixeira e com “price” superior a 10.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <h2>Produtos do Autor: Susana Teixeira (Preço > 10)</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>shiporder</th>
        <th>name</th>
        <th>address</th>
        <th>city</th>
        <th>title</th>
        <th>price</th>
      </tr>
      <xsl:for-each select="shiporder/item[autor='Susana Teixeira' and price > 10]">
        <tr>
          <td><xsl:value-of select="/shiporder/id"/></td>
          <td><xsl:value-of select="/shiporder/dados/name"/></td>
          <td><xsl:value-of select="/shiporder/dados/address"/></td>
          <td><xsl:value-of select="/shiporder/dados/city"/></td>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="price"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>

Modelação de Alunos com DTD e Exemplo XML

Crie um DTD para armazenar os dados dos alunos da ESTCB (tendo um ELEMENT com o nome Aluno_da_ESTCB e com os seguintes ELEMENT: nome, morada [podendo ser constituída por várias moradas, sendo que cada uma tem que conter rua, localidade e código_postal], email, telef, data_nascimento, CC, NIF), devendo permitir um ou mais telefones e emails, e com um atributo nacionalidade (que é um atributo de Aluno_da_ESTCB). Apresente um exemplo do XML correspondente.

Estrutura Lógica com XML Schema (XSD)

Apresente a estrutura lógica (XML Schema) para o exercício anterior. Use, pelo menos, xs:element, xs:attribute required, xs:restriction e order indicator choice.

Baixar

PDF Word HTML