Explicação do Script PHP DOM e Conteúdo do Ficheiro ex2.xsd
23 de Fevereiro de 2023
Explique o seguinte script PHP DOM e apresente o conteúdo do ficheiro “ex2.xsd”.
O código apresentado, com recurso à biblioteca DOM, cria um ficheiro XML Schema (XSD) que define a estrutura lógica de uma tabela: Tabela_cliente, com os campos: Nome_cliente, Morada_cliente, tlm_cliente.
Explicação exaustiva:
$dom = new DOMDocument();
$dom->formatOutput = true;
• Cria um novo documento DOM para gerar o XSD.
• Ativa a formatação para que o XML gerado seja mais legível.
$root = $dom->createElement('xs:element');
$root->setAttribute('name','Tabela_cliente');
$dom->appendChild($root);
• Cria o elemento raiz <xs:element> com o atributo name="Tabela_cliente". Este será o elemento principal da tabela de clientes.
• Adiciona este elemento ao documento.
$root1 = $dom->createElement('xs:element');
$root1->setAttribute('name','Nome_cliente');
Cria o elemento <xs:element> com o atributo name="Nome_cliente". Este representará o campo do nome do cliente.
$ctsptype = $dom->createElement('xs:simpleType');
$ctrestrition = $dom->createElement('xs:restriction');
$ctrestrition->setAttribute('base','xs:string');
$ctmaxlen = $dom->createElement('xs:maxLength');
$ctmaxlen->setAttribute('value',"100");
• Define um tipo simples (xs:simpleType) para o elemento Nome_cliente.
• Adiciona uma restrição (xs:restriction) para que o valor do nome seja baseado no tipo xs:string (texto).
• Aplica uma restrição adicional para limitar o comprimento máximo a 100 caracteres.
$ctrestrition->appendChild($ctmaxlen);
$ctsptype->appendChild($ctrestrition);
$root1->appendChild($ctsptype);
• Adiciona a restrição de comprimento (<xs:maxLength>) ao tipo simples (<xs:restriction>).
• Adiciona o tipo simples completo ao elemento Nome_cliente.
$root->appendChild($root2);
$root->appendChild($root3);
Adiciona os elementos Morada_cliente e tlm_cliente à raiz (Tabela_cliente).
Apresente o conteúdo do ficheiro “ex2.xsd”.
Crie um DTD para representar a estrutura lógica do exercício 2.
Apresente um ficheiro XSLT, tendo como base o ficheiro do exercício 2, de forma que apenas sejam visualizados todos os clientes cujo nome comece por “José” e tenham a morada em “Castelo Branco”.
Crie um Complex Element para ser usado na definição da tag “cliente” do exercício 2.
Resultado será:
Apresente a estrutura lógica (XML Schema) e respectivo XML com “alguns” dados para a utilização numa loja sapataria online. No modelo ER usaríamos, pelo menos, as seguintes entidades: produto, tipo_produto, cliente, encomenda. Use, pelo menos, xs:element, xs:attribute required, xs:restriction e order indicator choice.
Estrutura Lógica (XML Schema - XSD)
Exemplo de XML
<id_tipo>1</id_tipo>
<descricao>Calçado</descricao>
<id_produto>101</id_produto>
<nome>Botas de Couro</nome>
<preco>89.99</preco>
<qt_existente>50</qt_existente>
<tipo>1</tipo>
<id_cliente>201</id_cliente>
<nome_cliente>Maria Oliveira</nome_cliente>
<email>[email protected]</email>
<morada>Avenida da Liberdade, 100</morada>
<nif>987654321</nif>
<id_encomenda>301</id_encomenda>
<id_cliente>201</id_cliente>
<produto>101</produto>
<valor_total>89.99</valor_total>