lundi 31 décembre 2012

Construire un formulaire HTML




Modem 56K
Modem 28K
ADSL
Le cable

Comme navigateur, vous utilisez (plusieurs réponses possibles) :

Communicator 4.7
Netscape 6.2
Internet Explorer 4
Internet Explorer 5.5
Internet Explorer 6

Vous avez un site personnel :

oui
non

Si vous avez des commentaires (60 car. max) :



      
Le code de ce formulaire est simple : 

vendredi 28 décembre 2012

Définition Flux RSS



Un flux RSS (RSS est le sigle pour Really Simple Syndication) est un flux au format XML permettant à ses abonnés de récupérer automatiquement une partie (titre ou extrait) ou la totalité d’un article nouvellement créé. Le contenu du flux peut s’afficher sur une page publique, une page privée ou un lecteur de flux.
Les flux RSS sont notamment indispensables pour permettre aux internautes de suivre les nouvelles publications sur les blogs et leur usage s’est développé pour de nombreux sites éditoriaux.
La mise à disposition d’un flux RSS peut être une alternative ou un complément à l’utilisation d’une newsletter pour prévenir de la mise en ligne de nouveaux contenus. Les flux RSS n’ont cependant pas remplacé l’email comme cela était parfois prévu par certains observateurs.

Exercice : DTD vers les schémas XSD


Objectif: Les schémas permettent de décrire les modèles de données de façon plus précise.
Transposez la DTD Livres.dtd en un schéma XSD avec les caractéristiques suivantes :

    •Une année est une chaîne de 4 caractères compris dans l'espace 0...9
    •Un livre contient exactement un titre, un prix, une année et au moins un auteur. De plus, on
       associe à des éléments de ce type l'attribut "edition" qui précise si il s'agit d'un paperback
       ou d'une édition reliée.
    •Un prix est un type complexe, on lui associe deux attributs: "valeur" et "monnaie" ("monnaie" a
       un type qui dérive de "string", son champs de valeur se limite aux chaînes "USD" et "EUR")

Livres.dtd
    <!ELEMENT livres (livre*)>
    <!ELEMENT livre (titre, auteur+, année, prix)>
    <!ATTLIST livre edition CDATA #REQUIRED>
    <!ELEMENT titre (#PCDATA)>
    <!ELEMENT auteur (prenom, nom, laboratoire?, pays)>
    <!ELEMENT nom (#PCDATA)>
    <!ELEMENT prenom (#PCDATA)>
    <!ELEMENT année (#PCDATA)>
   <!ELEMENT laboratoire (#PCDATA)>
    <!ELEMENT prix EMPTY>
    <!ATTLIST prix
       monnaie CDATA #REQUIRED
       valeur CDATA #REQUIRED>
    <!ELEMENT pays (#PCDATA)>

Solution :

lundi 24 décembre 2012

Le langage SQL

SQL est un langage de définition de données
SQL est un langage de définition de données (LDD), c'est-à-dire qu'il permet de créer des tables dans une base de données relationnelle, ainsi que d'en modifier ou en supprimer.

dimanche 23 décembre 2012

Exercice JAVA modularisation du code de la multiplication matricielle

Le programme MulMat.java que vous avez développé  contient de nombreuses portions de code dupliquées: il est mal modularisé! 
On souhaiterait améliorer ce programme au moyen de méthodes auxiliaires. Dans le programme MulMatMod.java, la méthode main a déjà été réécrite avec des appels à des méthodes auxiliaires utiles. Il vous est demandé de compléter le code de MulMatMod.java. Vous pouvez transférer les instructions nécessaires depuis le programme MulMat.java en les copiant-collant. Exécutez les deux programmes pour vérifier qu'ils ont le même comportement. 
Code à compléter :


class MulMatMod {
    public static void main(String[] args) {
        double[][] mat1 = lireMatrice();
        double[][] mat2 = lireMatrice();
        if (mat1[0].length != mat2.length) {
            System.out.println("Multiplication de matrices impossible !");
        } else {
            double [][] prod = multiplierMatrice(mat1, mat2);
            System.out.println("Résultat :");
            afficherMatrice(prod);
        }
    }
}

Solution

Exercice JAVA permutation du contenu de deux variables

Implémentez en Java un algorithme vous permettant de permuter les valeurs de deux variables.
#mce_temp_url#
Exemple d'exécution:
  Entrez x: 1
  Entrez y: 2
  Avant permutation:
  x : 1
  y : 2
  Après permutation:
  x : 2
  y : 1


Solution

Exercice JAVA condition if - nombre pair ou impair


Ecrivez un programme Java qui lit un nombre et indique s'il est positif, négatif ou s'il vaut zéro et s'il est pair ou impair.
Exemple d'exécution:
Entrez un nombre entier: 5
Le nombre est positif et impair

Entrez un nombre entier: -4
Le nombre est négatif et pair

Entrez un nombre entier: 0
Le nombre est zéro (et il est pair)

Solution

vendredi 21 décembre 2012

jeudi 13 décembre 2012

Le Web 2.0



Selon le document Wikis, blogues et Web 2.0 – Opportunités et impacts pour la formation à distance, « le terme Web 2.0 est généralement utilisé pour désigner une évolution d’un web statique et unidirectionnel vers un réseau dynamique et interactif, caractérisé par une large participation des usagers à la création et à l’échange de contenus. »  En d’autres mots, nous pourrions dire que c’est un synonyme du web participatif.  Il est souvent associé à l’utilisation de logiciels sociaux en ligne, tels que les blogues, wikis, microblogues ou autres réseaux sociaux.
L’illustration ci-dessous résume bien la différence entre le Web 1.0 et 2.0.

Quelques éléments de l'évolution du Web

mercredi 12 décembre 2012

Exercice 15 en C++ (les tableaux)


EXERCICE 15

Ecrire un programme qui demande à l'utilisateur de taper le contenu d'un tableau de réels de 3 lignes et 3 colonnes et qui affiche ce tableau mais en affichant la moyenne des éléments de chaque ligne, de chaque colonne et la moyenne globale.

mercredi 28 novembre 2012

Exercice Visual Basic : Fiche Client


Ecrire le code VB qui permet de réaliser les Interfaces suivantes:




Solution

Exercice 14 en C++ (les tableaux)


EXERCICE 14

Ecrire un programme qui demande à l'utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stockés dans un tableau et qui affiche le nombre de fois qu'on a tapé un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20.

Exercice 13 en C++ (les tableaux)


EXERCICE 13

Ecrire un programme qui demande à l'utilisateur de taper un entier N<=20 et qui affiche la N-ième ligne du triangle de pascal.
ligne 1 : 1 1
ligne 2 : 1 2 1
ligne 3 : 1 3 3 1
ligne 4 : 1 4 6 4 1
et ainsi de suite ...

Exercice 12 en C++ (les tableaux)


EXERCICE 12

Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
1. Ajouter un entier
2. Afficher la liste des entiers
3. Supprimer le premier entier ayant une valeur donnée.
4. Supprimer tous les entiers ayant une valeur donnée
5. Quitter
Il y aura au maximum 10 entiers. La liste devra être en permanence triée : lorqu'on rajoute un entier, il sera inséré au bon endroit dans la liste pour que celle-ci reste triée.

Exercice 11 en C++ (les tableaux)


EXERCICE 11

Ecrire un programme qui gère une liste d'entiers grâce au menu suivant :
1. Ajouter un entier
2. Afficher la liste des entiers
3. Supprimer dernier entier de la liste.
4. Afficher la dernière note tapée
5. Quitter
Il y aura au maximum 10 entiers. Lorsqu'on rajoute un entier, il sera rajouté à la fin de la liste.

Exercice 10 en C++ (les tableaux)


EXERCICE 10

Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b qui doivent être triés dans l'ordre croissant. Le programme devra tout d'abord vérifier que les deux tableaux sont triés. Le tableau c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. Le tableau c devra contenir les éléments de a et ceux de b et devra être trié. Le programme affiche ensuite le tableau c.

Exercice 9 en C++ (les tableaux)


EXERCICE 9

Ecrire un programme qui saisit 2 tableaux de 10 entiers a et b. c est un tableau de 20 entiers. Le programme doit mettre dans c la fusion des tableaux a et b. On copiera dans les 10 premières cases de c le tableau a, dans les dix dernières le tableau b. Le programme affiche ensuite le tableau c.

Exercice 8 en C++ (les tableaux)


EXERCICE 8

Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.
Algorithme suggéré (tri bulle) :
On parcourt le tableau en comparant t[0] et t[1] et en échangeant ces éléments s'ils ne sont pas dans le bon ordre.
on recommence le processus en comparant t[1] et t[2],... et ainsi de suite jusqu'à t[8] et t[9].
On compte lors de ce parcours le nombre d'échanges effectués.
On fait autant de parcours que nécessaire jusqu'à ce que le nombre d'échanges soit nul : le tableau sera alors trié.

Exercice 7 en C++ (les tableaux)


EXERCICE 7

Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.
Algorithme suggéré :
On cherche l'indice du plus petit élément parmi les indices de 0 à 9 et on échange cet élément avec t[0].
On cherche l'indice du plus petit élément parmi les indices de 1 à 9 et on échange cet élément avec t[1].
On cherche l'indice du plus petit élément parmi les indices de 2 à 9 et on échange cet élément avec t[2].
... On cherche l'indice du plus petit élément parmi les indices de 8 à 9 et on échange cet élément avec t[8].

Exercice 6 en C++ (les tableaux)


EXERCICE 6

Ecrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau. Le programme doit ensuite afficher soit "le tableau est croissant", soit "le tableau est décroissant", soit "le tableau est constant", soit "le tableau est quelconque".

Exercice 5 en C++ (les tableaux)


EXERCICE 5

Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V et un entier i compris entre 0 et 9. Le programme doit décaler d'une case vers la droite tous les élements à partir de l'indice i (en supprimant le dernier élément du tableau) et doit mettre la valeur V dans le tableau à l'indice i. Le programme doit ensuite afficher le tableau final.

Exercice 4 en C++ (les tableaux)


EXERCICE 4

Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V.
 Le programme doit rechercher si V se trouve dans le tableau et doit supprimer la première occurrence de V en décalant d'une case vers la gauche les éléments suivants et en rajoutant un 0 à la fin du tableau. Le programme doit ensuite afficher le tableau final.

Exercice 3 en C++ (les tableaux)


EXERCICE 3

Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau. Le programme doit ensuite afficher l'indice du plus grand élément.

Exercice 2 en C++ (les tableaux)


EXERCICE 2

Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau ainsi qu'un entier V. Le programme doit rechercher si V se trouve dans le tableau et afficher "V se trouve dans le tableau" ou "V ne se trouve pas dans le tableau".



Exercice 1 en C++ (Les tableaux)


EXERCICE 1

Ecrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau. Le programme doit afficher le nombre d'entiers supérieurs ou égaux à 10.

Solution

dimanche 25 novembre 2012

Conclusion sur les meta tags


Je répète simplement une fois de plus que ceux qui pensent encore que le référencement se joue au niveau de l'optimisation des balises meta ont plusieurs métros de retard... Il y a plein d'autres choses à travailler sur son site avant les balises meta, notamment le netlinking et la création de contenu original !
On retiendra que Google ignore effectivement les balises meta keywords et revisit-after, et que la meta description n'a effectivement pas d'impact sur le positionnement.


Ce ne sont pas des balises meta mais ça y ressemble fortement. En voici une liste non exhaustive (cliquez sur les liens pour en savoir plus) :

  • link canonical : elle permet de définir l'URL officielle d'une page, pour réduire les problèmes liés aux contenus dupliqués
  • link standout : elle permet de définir les meilleurs articles de la semaine, pour Google News aux Etats-Unis.

Balise meta http-equiv refresh


A l'origine, cette balise permet de recharger la page au bout d'un temps indiqué en secondes. Des sites d'actualité l'utilisent par exemple pour forcer une mise à jour de l'affichage dans le navigateur. Cela dit tous les navigateurs ne la gèrent pas forcément de la même façon, et le W3C recommande de ne plus l'utiliser.
Dans le domaine du référencement, cette balise est parfois utilisée par certains webmasters pour rediriger l'internaute vers une autre page au bout d'un certain délai (par exemple 10 secondes). Il y a eu pas mal d'abus avec des meta refresh configurées avec un délai de 0 seconde, ce qui permettait de cacher le contenu de pages satellite aux internautes.
Si vous devez faire une redirection permanente, faites une redirection serveur avec un code 301 plutôt qu'une redirection par meta refresh avec 0 seconde de délai (qui n'est pas considérée par Google comme une vraie redirection 301).

Balise meta http-equiv charset

Cette balise sert à préciser le jeu de caractères utilisé pour le codage de la page.

Balise meta verify-v1

Cette balise sert uniquement pour les webmasters qui utilisent les outils de Google Webmaster Central, elle n'est pas indispensable pour un bon référencement. Elle est utilisée pour prouver que l'on est bien le webmaster du site pour lequel le compte Webmasters Tools est paramétré.

Balise meta google notranslate


Cette balise permet d'indiquer à Google que l'on ne souhaite pas qu'un lien Traduire soit affiché à côté du résultat de recherche. Google affiche parfois ce lien donnant accès à une traduction automatique de la page. Google précise dans son article que cette balise meta n'a généralementpas d'impact sur le positionnement.
A propos des langues, John Mueller précise (dans les commentaires du blog) que Google n'utilise pas les balises meta pour déterminer en quelle langue est écrite la page (il se débrouille avec des analyses statistiques des mots présents dans le contenu).

Balise meta geo.position et geo.region


Google n'utilise aucune des balises meta de géolocalisation, elles n'ont donc aucun impact dans le référencement local sur Google (voir la vidéo et la source). Pour information, voici malgré tout leur signification :
  • geo.position : indique la latitude et la longitude  de l'emplacement du site
  • geo.placename : indique le nom du lieu associé au site (par exemple une ville)
  • geo.region : indique l'identifiant du pays et du département (ou l'Etat pour les USA)
  • ICBM : indique la latitude et la longitude  de l'emplacement du site, avec une syntaxe différente de la meta geo.position
Certains pensent que Bing tient compte de ces balises geo mais je ne l'ai pas encore vérifié.


Les explications proviennent initialement de l'article de Google (rédigé par John Mueller, ingénieur Google à Zurich). 

Balise meta original-source

Dans le cas où un article a été rédigé à partir de plusieurs sources (notamment les sources ayant révélé un scoop), elle sert à indiquer la ou les URL des articles originaux. Exemple :


<meta name="original-source" content="http://www.example.com/article-original-scoop.html">


Balise meta syndication-source

Dans le cas de la syndication de contenus, elle sert à indiquer l'URL de l'article original. Exemple :


<meta name="syndication-source" content="http://www.example.com/article-original-pouvant-etre-publie-ailleurs.html">




Balise meta robots



Cette balise est prise en compte par Google (et les autres moteurs). Elle sert à définir des restrictions au robot qui vient crawler la page. Les principaux moteurs de recherche proposent également aux webmasters d'utiliser une balise spécifique (googlebot pour Google, slurp pour Yahoo, etc.) ; dans ces cas, les restrictions concernées ne s'appliquent qu'au moteur spécifié.
Voici les différentes valeurs possibles pour la balise meta robots, et leurs significations :
  • noindex : indique au robot qu'il ne faut pas indexer la page. Cela ne signifie pas que le robot ne va pas la crawler : pour cela il faut utiliser le fichier robots.txt
  • nofollow : indique au robot qu'il ne faut pas suivre les liens dans la page. Cela signifie que Google n'ira pas crawler les pages liées par la page contenant cette balise meta robots. Même si Google ne le précise pas dans son article, les moteurs ne tiendront pas non plus compte des liens présents sur la page dans leur algorithme (par exemple celui du PageRank).
  • index : indique au robot qu'il peut indexer la page. Cette valeur étant celle par défaut, il est totalement inutile de l'indiquer.
  • follow : indique au robot qu'il peut suivre les liens dans la page. Cette valeur étant celle par défaut, il est totalement inutile de l'indiquer.
  • all : cette valeur est l'équivalent de index,follow. Cette valeur étant celle par défaut, il est totalement inutile de l'indiquer.
  • none : cette valeur est l'équivalent de noindex,nofollow.
  • nosnippet : indique au robot qu'il ne faut pas afficher de descriptif (snippet) dans la page de résultats. J'ai du mal à voir l'intérêt pour un webmaster d'utiliser cette possibilité puisque ce descriptif permet d'inciter l'internaute à cliquer sur le résultat (peut-être qu'il existe des cas où le descriptif créé par le moteur n'est pas assez pertinent aux yeux du webmaster).
  • noarchive : indique au robot qu'il ne faut pas laisser l'accès à la version en cache. Le lien "En cache" dans la page de résultats ne sera donc pas affiché. Ceci peut servir à ceux qui passent leurs contenu d'une version publique accessible à une version archivée payante (sites de journaux par exemple).
  • noodp : indique au robot qu'il ne faut pas utiliser les données associées au site par les éditeurs de l'annuaire DMOZ (Open Directory Project, ODP). Ceci est utile si la description ou le titre du site dans DMOZ ne correspondent pas assez bien à la réalité. 
  • unavailable_after:[date] : indique au robot que la page ne doit pas ressortir dans les résultats après la date indiquée. 

Yahoo gère également la valeur noydir qui permet comme noodp d'indiquer au moteur qu'on ne souhaite pas que les données de l'annuaire Yahoo (Yahoo Directory) soient utilisées. 
Il est possible de combiner plusieurs valeurs au sein d'une seule balise meta robots : il suffit pour cela de séparer les valeurs par des virgules, comme par exemple :

<meta name="robots" content="noodp,noydir">

Balise meta revisit-after

Même s'il exite encore de nombreux webmasters qui y croient, la balise meta revisit-after n'est pas prise en compte par Google (ainsi que par les autres principaux moteurs d'après Google). Vous pouvez donc la supprimer de vos pages... Pour information, elle est censée indiquer aux robots au bout de combien de temps ils doivent revenir crawler la page. Google sait vraiment très bien paramétrer son robot pour qu'il adapte sa fréquence de visites en fonction de la fréquence des mises à jour ; si vraiment ça vous obsède, vous pouvez toujours définir ce type d'information dans lefichier sitemap.

Balise meta news_keywords


Introduite en septembre 2012, elle ne sert qu'au référencement dans Google Actualités. On peut se demander pourquoi Google réintroduit une balise meta keywords alors qu'il ignore la meta keywords classique !

Balise meta keywords


Elle n'est plus utilisée par Google, qui d'ailleurs ne la cite même pas dans son article... Si vous avez pris la peine de la remplir soigneusement, laissez-la, elle peut servir pour d'autres moteurs ou annuaires (c'est à peu près ce que dit John Mueller dans les commentaires).
En 2009, Google l'a confirmé : "Nous n'utilisons pas la balise meta keywords pour le classement du web" (source). Vous pouvez visionner cette vidéo pour en avoir le coeur net.

Balise meta description


La balise meta description est prise en compte par Google mais uniquement pour l'affichage des résultats. D'après mes tests (confirmés officiellement par Google dans l'article), cette balise n'a en effet aucun impact en termes de positionnement. Par contre, Google la reprend parfois en guise de descriptif de résultat (ce qu'on appelle le snippet) mais cela dépend des requêtes (la meta description n'est affichée que si Google considère qu'elle correspond bien à la requête).
Les explications officielles de Matt Cutts : Even though we sometimes use the description meta tag for the snippets we show, we still don't use the description meta tag in our ranking
Conclusion : ça vaut le coup de rédiger un bon message qui donne envie à l'internaute de cliquer. Intégrez des arguments marketing, commerciaux et adressez-vous directement à lui.

Ordre des balises meta

Juste une petite précision : l'ordre des balises meta n'a pas d'impact, tant qu'elles sont correctement remplies et situées dans l'entête (entre les balises <head> et </head>). Par habitude on met souvent la meta charset en haut, parfois avant la balise title, car c'est important de définir le jeu de caractères utilisé.

Balise title


Est-ce que Google tient compte de toutes les balises meta ? C'est sans doute un classique mais cette fois la réponse vient de Google directement... L'occasion de revenir sur chaque balise pour préciser son intérêt pour le référencement. Voici donc un tuto balises meta sous forme de liste complète de ces "meta tags" et de leur impact sur le référencement.


Balise title

Même si ce n'est pas une balise meta, Google confirme que la balise <title> est utilisée par Google dans son algorithme de classement. En bref, il faut choisir très soigneusement ce qu'on y met afin que cela décrive le mieux possible la page, les mots les plus importants au début.
A ma connaissance, la balise meta title n'existe pas et n'est donc pas prise en compte par les moteurs :

<meta name="title" content="Un titre">




Les explications proviennent initialement de l'article de Google (rédigé par John Mueller, ingénieur Google à Zurich). 

jeudi 22 novembre 2012

Exercice1 (bouteille) XML



XML permet de structurer une information. Il est donc nécessaire, avant d'envisager d'utiliser ce format, de se familiariser avec cette structuration.
Le paragraphe suivant contient de l'information "en vrac". Réorganisez-la de manière à mettre en évidence sa structure logique, sans forcément passer par une mise en forme XML.

Une bouteille d'eau Cristaline de 150 cl contient par litre 71 mg d'ions positifs calcium, et 5,5 mg d'ions positifs magnésium. On y trouve également des ions négatifs comme des chlorures à 20 mg par litre et des nitrates avec 1 mg par litre. Elle est recueillie à St-Cyr la Source, dans le département du Loiret. Son code barre est 3274080005003 et son pH est de 7,45. Comme la bouteille est sale, quelques autres matériaux comme du fer s'y trouvent en suspension.
Une seconde bouteille d'eau Cristaline a été, elle, recueillie à la source d'Aurèle dans les Alpes Maritimes. La concentration en ions calcium est de 98 mg/l, et en ions magnésium de 4 mg/l. Il y a 3,6 mg/l d'ions chlorure et 2 mg/l de nitrates, pour un pH de 7,4. Le code barre de cette bouteille de 50 cl est 3268840001008.
Une bouteille de même contenance est de marque Volvic, et a été puisée à... Volvic, bien connu pour ses sources donnant un pH neutre de 7. Elle comprend 11,5 mg/l d'ions calcium, 8,0 mg/l d'ions magnésium, 13,5 mg/l d'ions chlorures et 6,3 mg/l d'ions nitrates. Elle contient également des particules de silice. Son code barre est 3057640117008.

PS : Volvic est dans le Puy-de-Dôme...


Corrigé


<cave>
<bouteille>
<marque>Cristaline</marque>
<composition>
<ion type="positif">calcium 71mg/l</ion>
<ion type="positif">magnésium 5,5mg/l</ion>
<ion type="negatif">chlorure 20mg/l</ion>
<ion type="negatif">nitrate 1mg/l</ion>
<autre type="metal">fer</autre>
</composition>
<source>
<ville>St-Cyr la Source</ville>
<departement>Loiret</departement>
</source>
<code_barre>3274080005003</code_barre>
<contenance unit="cl">150</contenance>
<ph>7,45</ph>
</bouteille>
<bouteille>
<marque>Cristaline</marque>
<composition>
<ion type="positif">calcium 98mg/l</ion>
<ion type="positif">magnésium 4mg/l</ion>
<ion type="negatif">chlorure 3,6mg/l</ion>
<ion type="negatif">nitrate 2mg/l</ion>
</composition>
<source>
<ville>Aurèle</ville>
<departement>Alpes Maritimes</departement>
</source>
<code_barre>3268840001008</code_barre>
<contenance unit="cl">50</contenance>
<ph>7,4</ph>
</bouteille>
<bouteille>
<marque>Volvic</marque>
<composition>
<ion type="positif">calcium 11,5mg/l</ion>
<ion type="positif">magnésium 8mg/l</ion>
<ion type="negatif">chlorure 13,5mg/l</ion>
<ion type="negatif">nitrate 6,3mg/l</ion>
</composition>
<source>
<ville>Volvic</ville>
<departement>Puy-de-Dôme</departement>
</source>
<code_barre>3057640117008</code_barre>
<contenance unit="cl">50</contenance>
<ph>7</ph>
</bouteille>
</cave>