| OPML 2.0 |   | 
| Outline Processor Markup Language | 
22/11/07 DW - Il s'agit d'un document publié, à mettre en oeuvre s'il vous plaît, le format OPML 2.0 est figĂ©.
Traduction française par Denis Sureau pour Scriptol.fr.
Spécification en anglais - OPML 1.0
Ce document décrit un format pour stocker des plans en XML 1.0 nommé Outline Processor Markup Language ou OPML (en français Langage à Balises de Processeur de Plan).
Le but de ce format est de fournir un moyen pour échanger de l'information entre des logiciels de plans et les services Internet qui puisse être consultée ou controlée par un logiciel de plan.
OPML est aussi le format de fichier pour une application de plan, ce qui explique pourquoi les fichiers OPML peuvent contenir des informations sur la taille, la position et l'état d'expansion de la fenêtre dans laquelle le plan est affiché.
OPML est également devenu populaire comme format d'échange de listes de souscription entre lecteurs de flux et agrégateurs.
 L'objectif dans la 
  conception est d'avoir un format simple dans la transparence, l'auto-documentation, 
  extensible et lisible par l'homme, qui soit capable de représenter une 
  grande variété de données, que l'on puisse facilement parcourir 
  et éditer.
 C'est un format ouvert, 
  ce qui signifie que d'autres développeurs de logiciels plans et de services 
  sont invités à  utiliser ce format pour être compatibles 
  avec Radio Userland, l'Editeur OPML, ou pour toute autre fin. 
Un plan est une arborescence, où chaque noeud contient un ensemble d'attributs nommés avec des valeurs qui sont des chaînes de caractères.
 <opml> est un élément XML, avec un seul attribut 
  requis, version; un élément <head> et un élément 
  <body>, tous deux étant requis.
  L'attribut version est une chaîne de caractère de version 
  de la forme x.y, où x et y sont des chaînes numériques.
La valeur de version peut être 1.0, si elle est conforme à la version précédente de cette spécification, publiée en 2000; ou 2.0 si elle est conforme à la présente spécification.
Si vous voyez un fichier avec la version 1.1, traitez là comme si c'était un fichier de version 1.0.
 Un <head> contient zéro éléments optionnels ou 
  plus, décrits ci-dessous.
<title> est le titre du document.
<dateCreated> est une date-heure, indiquant quand le document a 
  été créé.
<dateModified> est une date-heure, indiquant quand le document 
  a été modifié pour la dernière fois.
<ownerName> est une chaîne de caractères, le propriétaire 
  du document.
<ownerEmail> est une chaîne de caractères, l'adresse 
  du propriétaire du document.
<ownerId> est l'adresse http de la page web qui contient l'information permettant à un lecteur humain de communiquer avec l'auteur du document par email ou autre moyen. Il peut être aussi utilisé pour identifier l'auteur. Deux auteurs ne peuvent pas avoir le même ownerID.
<docs> est l'adresse http de la documentation pour le format utilisé 
  dans le fichier OPML. C'est probablement un pointeur sur cette page pour les 
  gens qui pourraient tomber sur le fichier dans 25 ans de là et qui se 
  demanderaient ce que c'est.
<expansionState> est une liste séparée par des virgules 
  des numéros des lignes qui sont développées. Le numéro 
  de ligne dans la liste vous dit quels titres développer. L'ordre est 
  important. Pour chaque élément dans la liste, X, démarrant 
  au premier sommet, on se déplace X fois et on développe. On répète 
  pour chaque élément dans la liste.
<vertScrollState> est un nombre, disant quelle ligne du plan est 
  affichée sur la première ligne de la fenêtre. Ce nombre 
  est calculé en prenant en compte l'état de développement 
  déjà appliqué.
<windowTop> est un nombre, la position du pixel du bord supérieur 
  de la fenêtre.
<windowLeft> est un nombre, la position du pixel du bord gauche 
  de la fenêtre.
<windowBottom> est un nombre, la position du pixel du bord inférieur 
  de la fenêtre.
<windowRight> est un nombre, la position du pixel du bord droit 
  de la fenêtre.
Un <body> contient un élément <outline> ou plus.
Un <outline> est un élément XML, contenant au moins un attribut requis, texte et zéro attributs supplémentaire ou plus. Un <outline> peut contenir zéro sous-éléments <outline> ou plus. Aucun attribut ne peut être répété dans le même élement <outline>.
Chaque élément outline doit avoir au moins un attribut text, qui est ce qu'on affiche que un logiciel de plan ouvre le fichier OPML. Omettre l'attribut text rendrait l'affichage du plan inutile dans un logiciel de plan. C'est ce que l'utilisateur devrait voir -- clairement une situation inacceptable.
Un attribut text manquant dans un plan est une erreur.
Les attributs text peuvent contenir du balisage codé en HTML.
 type est une chaîne de caractères, il dit comment les 
  autres attributs du <outline> sont interprétés. 
isComment est une chaîne de caractères, soit "true" ou "false" 
  (vrai ou faux), indiquant si le plan est commenté ou non. Par convention 
  si un plan est commenté, tous les plans subordonnés sont considérés 
  également comme commentés. S'il n'est pas présent, la valeur 
  est faux.
isBreakpoint est une chaîne de caractères, soit "true" ou 
  "false", indiquant si un point d'arrêt est placé sur le plan. Cet 
  attribut est surtout nécessaire pour les plans utilisés pour éditer 
  des scripts. S'il n'est pas présent la valeur est faux.
created est la date-heure où le noeud du plan a été créé.
category est une chaîne de caractères 
  composée de chaînes délimitées par des slashs et 
  séparées par des virgules, dans le format définit par une 
  élément de catégorie RSS 
  2.0. Pour représenter une "étiquette", la chaîne 
  de catégorie ne doit pas contenir de slashs. 
  Exemples: 
  1. category="/Boston/Weather". 
  2. category="/Harvard/Berkman,/Politics".
Une liste de souscription peut être un liste à plusieurs niveaux de souscriptions à des flux. Chaque sous-élément du corps du document OPML est un noeud de type rss ou un élément de plan qui contient des noeuds de type rss.
De nos jours, la plupart des listes de souscription sont de simples séquences de noeuds rss, mais certains aggrégateurs permettent de catégoriser des listes de souscription qui sont structurées arbitrairement. Un valideur pourrait signaler ces fichiers, en prévenant que des processeurs peuvent ne pas comprendre ni préserver la structure.
Les attributs requis sont: type, text, xmlUrl. Pour les 
  éléments de plan dont le type est rss, l'attribut text 
  devrait initialement être l'élément de titre de plus haut 
  niveau du flux qui est pointé, toutefois, puisque cela est éditable 
  par l'utilisateur, les processeurs ne devraient pas toujours dépendre 
  de ce qui contient le titre du flux. 
 xmlUrl est l'adresse http du flux.
Les attributs optionnels sont description, htmlUrl, language, title, version. Ces attributs sont utiles pour présenter une liste de souscription à un utilisateur. Sauf pour version ils sont tous dérivés de l'information venant du flux lui-même.
description est l'élément de description de plus haut 
  niveau du flux. 
  htmlUrl est l'élément lien de plus haut niveau.
language est la valeur de l'élément language de plus haut 
  niveau.
title est probablement la même chose que text, il ne devrait pas 
  être omis, title contient l'élément titre de plus haut niveau 
  du flux.
version varie selon la version du flux RSS qui a été fournie. Cela a été inventé à une époque où l'on pensait qu'il pourrait y avoir des processeurs qui traiteraient seulement certaines versions, mais ce n'est plus devenu un problème important. Les valeurs que cela peut avoir sont RSS1 pour RSS 1.0; RSS pour 0.91, 0.92 or 2.0; scriptingNews pour le format scriptingNews. Il n'y a pas de valeur connus pour les flux Atom, mais ils pourraient certainement être fournis.
Un élément de plan dont les type est link doit avoir un attribut url dont la valeur est une adresse http. L'élément text est, comme de coutume, ce qui est affiche par un logiciel de plan; c'est aussi ce qui est affiché par un moteur de rendu HTML.
Quand un link est développé par un logiciel de plan, si l'adresse finit par ".opml", le plan se développe sur place. C'est ce qu'on appelle inclusion.
Si l'adresse ne se termine pas par ".opml" le lien est supposé pointer sur quelque chose que le navigateur ne peut pas afficher.
En OPML 2.0 un nouveau type est introduit. Un élément de plan dont le type est include doit avoir un attribut url qui pointe sur le fichier OPML à inclure.
La différence entre link et include est que link peut pointer sur quelque chose qui s'affiche dans un navigateur, et include pointe toujours sur un fichier OPML.
Un directory (répertoire) peut contenir une structure arbitraire d'éléments de plan de type include, link ou rss et éventuellement autres types. Une grande variété de logiciels peut être utilisée pour afficher des répertoires, incluant un logiciel de plan tel que OPML Editor.
Un fichier OPML peut contenir des éléments et attributs non décrits dans cette page, seulement si ces éléments sont définis dans un espace de nom comme spécifié par le W3C.
OPML peut aussi être étendu par l'ajout de nouvelles valeurs pour le type attribut. Quand on spécifie une telle extension, en suivant l'exemple de cette spécification, on dit quels attributs sont requis et lesquels sont optionnels, et on explique le rôle que jouent chaque attributs, leurs relations, et à quelles règles ils doivent se conformer. Il y a un mécanisme dans OPML Editor qui est basé sur cette forme d'extension.
Les développeurs devraient, tant que possible, utiliser les possibilités déjà utilisées par les autres, ou incluses dans cette spec, ou les recommandations ou les règles.
 Exemples 
  subscriptionList.opml
  states.opml
  simpleScript.opml
  placesLived.opml
  directory.opml
category.opml
1. Toutes les dates-heure doivent être conformes à la Spécification RFC 822 de Date et Heure, à l'exception de l'année qui peut être exprimée sur deux ou quatre caractères (quatre est préférable).
2. La page dans <ownerId> peut contenir des éléments links pointant sur d'autres documents contenant des informations sur le propriétaire. Par exemple, vous pouvez avoir un élément link pointant sur un document FOAF décrivant le/la propriétaire et son réseau d'amis; ou un flux RSS avec des nouvelles du propriétaire, éventuellement même relatifs par des éléments de catégorie RSS 2.0 à des parties du document OPML. En d'autre mots, tous les mécanismes d'extension de HTML peuvent entrer en jeu.
3. La valeur des attributs type ne sont pas sensibles à la casse, ce qui fait que type="LINK" représente la même chose que type="link".
4. Les attributs de plan ne contiennent généralement pas de code de balisage HTML, à moins qu'ils ne disent explicitement d'inclure un balisage.
5. Les processeurs devraient tous les attributs qu'ils ne reconnaissent pas.
6. Il n'y a pas de limite documentée pour le nombre d'attributs qu'un élément <outline> puisse avoir, ou le nombre d'éléments <outline> qu'il puisse contenir ou la taille de tout attribut.
7. Chaque sous-élément de <head> peut apparaître une fois ou pas du tout. Aucun sous-élément de <head> ne peut être répété.
8. Si une page HTML est générée à partir d'un document OPML, vous pouvez utiliser un élément link HTML pour permettre une "auto-découverte" du OPML. La valeur d'attribut rel est "outline", le type "text/x-opml", et bien sûr l'attribut href contient l'adresse du document OPML.
9. Vous pouvez inclure des éléments de OPML 2.0 dans d'autres 
  formats basés sur XML. L'URI pour l'espace de nom est http://opml.org/spec2. 
  La déclaration d'espace de nom devrait ressembler à ceci: xmlns:opml="http://opml.org/spec2".
  Toutefois, pour la compatibilité ascendante, les éléments 
  fondamentaux (ceux définis par cette spec) d'un document OPML 2.0 ne 
  sont pas dans un espace de nom. Voici un exemple 
  d'un fichier RSS 2.0 qui contient un plan dans un de ses éléments.
Feuille de route 
  La version 2.0 est la dernière version de OPML. Tous développements 
  futurs se feront pas le biais des espaces de nom, de nouveau types de plans, 
  selon la section Etendre OPML de cette spécification; ou dans des formats 
  dérivés de OPML portant des noms différents.
 © Copyright 2000 UserLand Software, Inc. Tous Droits Réservés.
  © Copyright 2006-2007 Scripting News, Inc. Tous Droits Réservés.
  Ce document et ses traductions peuvent être copiées et fournies 
  à autrui, et les oeuvres dérivées pour le commenter ou 
  pour l'expliquer ou assister à sont implémentation peuvent être 
  rédigées, copiées, publiées et distribuées, 
  entièrement ou en partie, sans restriction d'aucune sorte, pourvu que 
  la notice de copyright ci-dessus et ces paragraphes soient inclus dans ces copies 
  ou oeuvres dérivées. 
  Ce document ne peut en aucune façon être modifié par la 
  suppression de la notice de copyright ou les références à 
  UserLand ou autres organisations. Par ailleurs, puisque ces restrictions de 
  copyright s'appliquent à l'écrit de la spécification de 
  OPML , aucune revendication de propriété n'est faite par UserLand 
  quand au format qu'il décrit. N'importe qui peut, pour des motifs commerciaux 
  ou non commerciaux, implémenter ce protocole sans droits de licence ou 
  royalties dus à UserLand. Les permissions limitées garanties ci-dessus 
  sont perpétuelles et ne seront pas révoquées par UserLand 
  ou ses successeurs ou représentants.
  Le document et les informations ci-dessus sont fournies sur une base "tel 
  quel" et USERLAND DECLINE TOUTES GARANTIES, EXPRESSES OU IMPLIQUEES, INCLUANT 
  SANS S'Y LIMITER A TOUTE GARANTIE QUE L'UTILISATION DE L'INFORMATION CI-DESSUS 
  N'ENFREINDRA AUCUN DROIT OU TOUTE GARANTIE IMPLIQUEE DE COMMERCIALISATION OU 
  D'APPLICABILITE POUR UNE UTILISATION QUELCONQUE.
 © Copyright 2000-2008, Scripting News, Inc.
  OPML is a trademark of Scripting News, Inc.
  Last update: Thursday, November 22, 2007 at 11:40:34 AM.
© Copyright 2008 Denis Sureau pour la traduction française. Lien: https://www.scriptol.fr/xml/OPML-2.0.html.
Licence de la traduction française: Cette traduction peut être imprimée et utilisée librement à condition que les notices de copyright, dont le copyright de traduction ci-dessus, soient conservés. Ce document ne peut être placé sur un autre site Web, on doit plutôt placer un lien sur l'URL ci-dessus - Traduction mise en ligne le 7 Mai 2008.