Développeur web freelance depuis 5 ans
Expérience en agence web, E-Commerce (annonceur)
Formation Informatique et Autodidacte
Formateur et fan des OSS, contributeur à mes heures perdues
Solutions phares : Wordpress, Symfony, Magento, Prestashop, Angular
Langages : PHP, MySQL, HTML, CSS, JS
- Taille du fichier
- Zone de travail (Plus de cellules)
- Possibilité d'afficher le classeur sur une page web
Format | Extension | Description |
---|---|---|
Classeur Excel 97 - 2003 | .xls | Avant Excel 2007 |
Classeur Excel | .xlsx | Compacté, respect format XML, pas de macros |
Classeur Excel prenant en charge les macros | .xlsm | Classeur Excel avec Macros |
Classeur Excel binaire | .xlsb | Format binaire |
Modèle | .xltx | |
Modèle avec macros | .xltm | |
Complément Excel | .xlam | Pour exécuter du code supplémentaire |
Les formats ont changés à partir d'Excel 2007.
Un classeur .xls sera compatible dans toutes les version d'Excel.
Un classeur .xlsx ne sera compatible qu'avec Excel 2007, 2010, 2013, 2016.
Le pack de compatibilité Microsoft Office permet d'ouvrir les nouveaux formats (xlsx, xlsm) dans des versions antérieures à Excel 2007.
Le XML ou eXtensible Markup Language est un langage informatique de balisage générique.
S'écrit avec des balises.
Une balise permet de structurer, d'organiser et de hiérarchiser.
Générique car on peut créer nos propres balises (HTML...)
SGML (Standard Generalized Markup Language) pour standardiser cet échange.
XML pour simplifier le SGML en 1998.
Pour échanger facilement des données.
Standard et recommandation W3C.
Compréhensible par l'homme et la machine.
Règles et balises personnalisables.
<!-- Le PROLOGUE donne des informations sur le fichier (version XML, encodage) -->
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- Dans le CORPS, il y a forcément une balise racine
qui contient toutes nos balises -->
<contacts>
<contact>Jean</contact>
<contact>Eric</contact>
</contacts>
Un fichier XML nécessite un prologue et un corps.
Le prologue contient des informations sur le document.
Le corps contient nos balises organisées, hiérarchisées, décrivant nos données.
Il existe les balises par paires et les balises uniques.
On peut placer des attributs avec des valeurs sur les balises.
<balise attribut="valeur">Ceci est une balise par paire</balise>
<balise-unique attribut="valeur" attribut2="valeur" />
<balise>
<balise-enfant></balise-enfant>
On peut aussi mettre une valeur ici
</balise>
- Ouvrir un éditeur de texte
- Créer un fichier XML contenant une liste de contacts
- Pour chaque contact, stocker les informations suivantes :
Ensemble de règles imposées à un document XML.
Décrit la façon dont le document doit être construit.
Imposer la présence d'une balise, d'un attribut.
Imposer l'ordre des balises ou le type d'une donnée.
Associer une définition à un document permet d'imposer une écriture uniforme pour tous les contributeurs du document.
Un document conforme à une définition sera un document valide.
Alternative bien meilleure aux DTD...
Un schéma XML contiendra les règles qu'un document XML doit respecter.
Il porte l'extension .xsd.
<!-- Prologue -->
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Corps et Racine -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
</xsd:schema>
Et pour lier notre document à ce schéma
<?xml version="1.0" encoding="UTF-8"?>
<racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="schema.xsd">
</racine>
Un élément simple est un élément qui ne contient qu'une valeur de type simple. Il ne contient pas d'autres éléments.
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>Dupont</nom>
<!-- Contient un attribut => n'est pas un élément simple -->
<!-- Cependant l'attribut "sexe" est un élément simple -->
<contact sexe="masculin">Jean Dupont</contact>
<!-- La balise contact contient d'autres éléments (les balises nom et prénom)
=> n'est pas un élément simple -->
<contact>
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>Dupont</nom>
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<prenom>Jean</prenom>
</contact>
<!-- Extrait de notre XML -->
<nom>Dupont</nom>
<prenom>Jean</prenom>
<age>26</age>
<!-- Extrait du Schéma XML -->
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" ></xsd:element>
<xsd:element name="age" type="xsd:int" ></xsd:element>
Exemple de schéma XML correspondant à un extrait de document XML.
Type | Description | Exemple |
---|---|---|
string | Représente une chaine de caractères | <xsd:element name="string" type="xsd:string" /> <string>Une chaine</string> |
date | Représente une date | <xsd:element name="madate" type="xsd:date" /> <madate>1924-01-13</madate> |
int | Représente un nombre entier | <xsd:element name="nombre" type="xsd:int" /> <nombre>12</nombre> |
float | Représente un nombre à virgule | <xsd:element name="prix" type="xsd:float" /> <prix>12.45</prix> |
boolean | Représente un état vrai ou faux | <xsd:attribute name="actif" type="xsd:boolean" /> <contact actif="true">Matthieu</contact> |
Un élément complexe est un élément qui contient d'autres éléments ou des attributs.
<!-- la balise contact contient d'autres balises => élément complexe -->
<contact>
<!-- la balise nom est un élément simple -->
<nom>Dupont</nom>
<!-- la balise prenom est un élément simple -->
<prenom>Jean</prenom>
</contact>
<!-- la balise personne possède un attribut => élément complexe -->
<contact sexe="masculin">Jean Dupont</contact>
<!-- Extrait de notre XML avec Contenu Simple -->
<prix devise="euros">35</prix>
<!-- Extrait du Schéma XML avec Contenu Simple -->
<xsd:element name="prix">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:float">
<xsd:attribute name="devise" type="xsd:string"></xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Il existe 2 types d'éléments complexes : Simples, Standards.
<!-- Extrait de notre XML avec Contenu Standard -->
<contact sexe="masculin">
<nom>Dupont</nom>
<prenom>Robert</prenom>
</contact>
<!-- Extrait du Schéma XML avec Contenu Standard -->
<xsd:element name="contact">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"></xsd:element>
<xsd:element name="prenom" type="xsd:string"></xsd:element>
</xsd:sequence>
<xsd:attribute name="sexe" type="xsd:string" ></xsd:attribute>
</xsd:complexType>
</xsd:element>
Et pour le contenu Standard...
On peut remplacer "sequence" par "all" (peu importe l'ordre des balises) ou "choice" (l'une ou l'autre des balises)
<!-- Extrait de notre XML -->
<contacts>
<contact>
<nom>Dupont</nom>
<prenom>Jean</prenom>
</contact>
</contacts>
<!-- Extrait du Schéma XML -->
<xsd:element name="contacts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="contact" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"></xsd:element>
<xsd:element name="prenom" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Et si j'ai un type complexe encapsulant un autre type complexe ?
Reprendre le document XML avec la liste des contacts et créer le schéma XML correspondant.