Vous êtes sur la page 1sur 4

Amb el fitxer comarques.

xml donat, crea el DTD, l'XSD, i l'XSLT perqu el resultat per pantalla
extregui les dades de la mateixa manera que es mostra a la imatge. La presentaci pot canviar,
per no les dades demanades.

Primera consulta: indicar les comarques que comencen per B, comptant-les i mostrant la
posici. (funcions starts-with, count i position)

Segona consulta: Mostrar el nom i la capital de cada comarca, amb la funci concat()

Tercera consulta: Mostrar la Capital de la comarca, el nom de la comarca i els habitants,


mostrant la llista ordenada per Capital a la inversa.

Es valorar una presentaci ms treballada.

FITXER DTD:

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT comarques (comarca+)>

<!ATTLIST comarques

xsi:noNamespaceSchemaLocation CDATA #IMPLIED

xmlns:xsi CDATA #IMPLIED>

<!ELEMENT comarca (Nom, CodiAlfabetic, Coditerritorial, Habitants, Superficies, Capital)>

<!ELEMENT Nom (#PCDATA)>

<!ELEMENT CodiAlfabetic (#PCDATA)>

<!ELEMENT Coditerritorial (#PCDATA)>

<!ELEMENT Habitants (#PCDATA)>

<!ELEMENT Superficies (#PCDATA)>

<!ELEMENT Capital (#PCDATA)>


FITXER XSD:

<?xml version="1.0" encoding="utf-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault="qualified">

<xs:element name="comarques">

<xs:complexType>

<xs:sequence>

<xs:element ref="comarca" maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute name="xsi:noNamespaceSchemaLocation" type="xs:string"/>

<xs:attribute name="xmlns:xsi" type="xs:string"/>

</xs:complexType>

</xs:element>

<xs:element name="comarca">

<xs:complexType>

<xs:sequence>

<xs:element ref="Nom"/>

<xs:element ref="CodiAlfabetic"/>

<xs:element ref="Coditerritorial"/>

<xs:element ref="Habitants"/>

<xs:element ref="Superficies"/>

<xs:element ref="Capital"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="Nom" type="xs:string"/>

<xs:element name="CodiAlfabetic" type="xs:string"/>

<xs:element name="Coditerritorial" type="xs:string"/>

<xs:element name="Habitants" type="xs:string"/>

<xs:element name="Superficies" type="xs:string"/>

<xs:element name="Capital" type="xs:string"/>


</xs:schema>

XSL:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head>

</head>

<body bgcolor="#00FFBF">

<h2>Comarques que comencen per b</h2>

<xsl:value-of select="count(/comarques/comarca[starts-with(Nom,'B')])"/> Comarques

que comencen

per B <br/>

<table border="1" bgcolor="white">

<tr bgcolor="#81DAF5">

<th>Comarques</th>

</tr>

<xsl:for-each select="comarques/comarca[starts-with(Nom,'B')]">

<tr>

<td><xsl:value-of select="Nom"/></td>

</tr>

</xsl:for-each>

</table>

<h2>Comarques i les seves capitals</h2>

Comarques i les seves capitals <br/>

<table border="1" bgcolor="white">

<tr bgcolor="cian">

<th>Comarques - Capital</th>

</tr>
<xsl:for-each select= "comarques/comarca">

<tr>

<td><xsl:value-of select="concat(Nom, '-', Capital)"/> </td>

</tr>

</xsl:for-each>

</table>

<h2>Comarques i les seves capitals descendent</h2>

Comarques, les seves capitals i els seus habitants en ordre descendent <br/>

<table border="1" bgcolor="white">

<tr bgcolor="#white">

<th>Comarques - Capital - Habitants</th>

</tr>

<xsl:for-each select= "comarques/comarca">

<xsl:sort select="Capital" order="descending"/>

<tr>

<td><xsl:value-of select="concat(Capital,'(',Nom, ')','--&gt;',Habitants)"/> </td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Vous aimerez peut-être aussi