Décrire les données à l'aide de XML. Création de documents XML bien formés. La structure du document XML. Prologue, élément racine

Description de la structure des documents XML.

Chaque document XML contient des informations sur les données et leur structure (description des métadonnées).

Les documents XML peuvent être de deux types :

1. documents créés en tenant compte des règles logiques et structurelles ;

2. les documents qui n'utilisent aucune règle, à l'exception des règles de syntaxe pour la mise en forme des documents XML.

Le processeur XML vérifie la conformité des documents du premier type avec les règles spécifiées. La vérification des documents du deuxième type est effectuée par le développeur.

Lors de la création d'un document du premier type, la description de sa structure peut être effectuée à l'aide de langages tels que les définitions de type de document (DTD), XML Schema, RELAX NG, XML Data-Reduced, etc. Les langages les plus répandus sont Schéma DTD et XML.

De plus, les atouts et faiblesses les langages les plus courants pour décrire la structure et est donné résumé leurs fondements. Puisque ce tutoriel se concentre sur les problèmes d'intégration des systèmes d'information, lors de l'examen des langages de description de structure, l'accent sera mis sur les problèmes de modularité et de réutilisation des schémas.

Langage de définition de schéma XML (XSD).

Le langage XML Schema Definition (XSD) est basé sur XML et a plus de capacités pour décrire la structure d'un document qu'une DTD. Il prend en charge la saisie de données, les espaces de noms, les expressions régulières.

XML Schema contient une description des éléments et des attributs d'un document XML, des règles d'héritage des éléments, y compris l'ordre et le nombre de descendants, le type de contenu des éléments, les types de données des éléments et des attributs, les valeurs des éléments et des attributs, et des restrictions supplémentaires sur les valeurs. De plus, l'utilisation de XML Schema permet de transformer un document XML en une hiérarchie d'objets de certains types, auxquels on peut accéder par programmationà l'aide de l'interface (fonctionnalité PSV1).

Le principal avantage du langage XML Schema est sa prise en charge des données fortement typées. Lors de l'échange de données entre différentes applications et bases de données, le problème de la correspondance des types de données reste toujours d'actualité, car dans différents systèmes les définitions des types de données peuvent différer. Ces différences incluent : les valeurs maximales et minimales possibles, la longueur maximale, la prise en charge nombres fractionnaires, codage interne et format externe (par exemple, pour la date et l'heure). Ainsi, bien que les noms des types de données puissent se chevaucher, leur implémentation peut différer d'un produit à l'autre. L'utilisation de types de données dans les schémas permet d'effectuer la vérification nécessaire des données du document lors de l'échange ou du partage de données par plusieurs systèmes.

Ce guide n'est pas des conseils détaillés sur le langage XML Schema, nous nous limiterons donc ici aux informations de base sur le langage XSD, qui sont nécessaires pour comprendre le matériel suivant.

XML Schema est toujours généré dans fichier séparé avec l'extension xsd. Le fichier XML est associé au schéma associé à l'aide de l'attribut schemaLocation de l'espace de noms de schéma. Pour utiliser l'attribut schemaLocation, l'espace de noms du schéma doit être défini. Toutes ces définitions sont spécifiées dans l'élément racine du document XML.

Examinons les éléments de base de la structure XML Schema.

L'élément racine est toujours l'élément ... Description des attributs de l'élément est donné dans le tableau. 2.10.

Élément racine peut contenir les enfants suivants :

1. - utilisé pour définir les éléments d'un document XML ;

2. - utilisé pour définir les attributs d'un document XML ;

3. - il est nécessaire de définir un groupe d'éléments destinés à être réutilisés dans le cadre du schéma par référence au nom du groupe ;

4. - utilisé pour définir les attributs d'un groupe d'éléments ;

5. - permet d'inclure de la documentation dans des documents XML ;

6. - permet l'utilisation de composants du circuit externe spécifié dans le circuit principal (offre la modularité des circuits);

7. - ajoute tous les composants du circuit externe spécifié au circuit principal (assure la modularité des circuits);

8. - contient la définition d'une notation qui décrit le format des données non XML dans un document XML ;

9. - remplace les composants d'un schéma externe qui a le même espace de noms que le schéma principal ;

10. - déclare le type de contenu simple de l'élément. Les éléments avec des types de données simples ne peuvent contenir que des données de caractères et ne peuvent pas inclure d'attributs ou d'éléments enfants ;

11. - déclare un type de contenu d'élément complexe, qui peut inclure des attributs et d'autres éléments.

XML Schema prend en charge trois catégories principales de types de données :

1. types primitifs prédéfinis - types de données fondamentaux qui peuvent être référencés et appliqués aux éléments et aux attributs. Des exemples de types de données primitifs sont String, Float, Double, Time, Date, Decimal, AnyURI ;

2. types dérivés prédéfinis - types intégrés dérivés de types primitifs. Des exemples de types de données dérivés sont Integer, Long, Byte, Short, nonPositiveInteger, nonNegativeInteger, ID, etc. ;

3. types non standard- les types de données définis par l'utilisateur, qui sont créés à partir de types primitifs ou dérivés en introduisant des restrictions supplémentaires. La prise en charge des types de données non standard est extrêmement utile pour la vérification des données avec la logique métier à l'esprit.

XML Schema utilise la syntaxe suivante pour décrire les éléments et les attributs qui ont des types de données prédéfinis (primitifs et dérivés).

Facultativement, pour les éléments et les attributs, vous pouvez spécifier les attributs fixes ou par défaut pour spécifier des valeurs d'élément/attribut fixes ou des valeurs par défaut.

Si vous devez décrire un type de données non standard pour un élément ou un attribut, vous devez le faire à l'aide de la balise en y décrivant un nouveau type de données.

De nouveaux types de données simples non standard sont obtenus par :

1. Restriction d'un type simple intégré ou défini précédemment en spécifiant des contraintes supplémentaires ;

2. unions (union) de types simples;

3. en utilisant une liste de types simples.

Un exemple d'utilisation d'un nouveau type de données simple obtenu en rétrécissant un type prédéfini (des restrictions sur la longueur de chaîne maximale et minimale autorisée sont imposées sur le type String de base) :

Un exemple d'utilisation d'un nouveau type de données simple obtenu en combinant des types de base (un élément ou un attribut peut prendre des valeurs entières non négatives ou non positives) :

Un exemple utilisant une liste de types simples (l'attribut shoeSizes est déclaré comme une liste contenant les valeurs décimales 10,5, 9, 8 et 11) :

Le langage XML Schema utilise différents types de contraintes de données (voir tableau 2.8) :

1. restrictions de longueur (nombre de caractères);

2. limites de valeurs (valeurs les plus élevées et les plus basses comme plage ou seuil);

3. Limitations du nombre de chiffres d'un nombre décimal (le nombre total de chiffres ou le nombre de chiffres après la virgule);

4. liste des valeurs acceptables ;

5. modèles ;

6. traitement des caractères d'espace.

Des exemples d'utilisation de diverses restrictions sont donnés dans le tableau. 2.11.

Les éléments de type simple ou de types standard prédéfinis ne peuvent contenir que des données (ne peuvent pas contenir d'attributs ou d'éléments enfants).

Tout type de données simple peut contenir un ensemble arbitraire de contraintes, qui est déterminé par la logique métier de l'application de données.

Si un nom est attribué à un type de données simple, une référence à un nouveau type de données non standard peut être réutilisée dans le schéma donné (similaire à une référence à des types de données prédéfinis).

Dans cet exemple, un type de données non standard nommé "Code" est défini, basé sur le type "string" : il est utilisé comme type de données pour les éléments "Code1" et "Code2".

Le schéma utilise un type de données complexe pour décrire les éléments d'un document XML qui contiennent des éléments enfants et des attributs, qui est spécifié à l'aide de la balise .

Lors de la description d'un type complexe, l'ordre d'occurrence des éléments enfants est indiqué (à l'aide de balises spéciales - indicateurs d'ordre, voir Tableau 2.11), ainsi que le degré de cardinalité des éléments répétés (à l'aide des attributs minOccurs et maxOccurs).

Attribut MinOccurs définit le degré minimum de cardinalité, c'est-à-dire le plus petit nombre possible de répétitions de l'élément enfant. Une valeur minOccurs de zéro indique un élément facultatif.

Attribut MaxOccurs détermine le degré maximum de cardinalité, ou le plus grand nombre de répétitions d'un élément. Les degrés de cardinalité maximum et minimum sont définis par certaines valeurs. MaxOccurs peut être spécifié comme illimité (l'élément apparaît un nombre quelconque de fois).

Cet exemple décrit un type de données complexe pour l'élément "Livre" contenant les éléments enfants "Titre", "Auteur", "Code", "Prix". Étiqueter est un indicateur de l'ordre d'occurrence des éléments enfants (tableau 2.12), et l'attribut maxOccurs indique le nombre maximum de répétitions de l'élément "Auteur".

L'indicateur d'ordre de choix indique qu'un article de ce type de prix peut contenir soit des roubles, soit des dollars, mais pas les deux.


Informations similaires.


XML est à usage général, les caractères ne sont pas limités au jeu de caractères ASCII 7 bits. Les caractères autorisés dans XML sont les trois caractères de contrôle ASCII CO, tous les caractères normaux de la norme ASCII et presque tous les autres caractères Unicode.

Noms.

En XML, tous les noms doivent commencer par une lettre, un trait de soulignement (_) ou deux points (:) et continuer uniquement avec des caractères valides pour les noms, c'est-à-dire qu'ils ne peuvent contenir que des lettres incluses dans la section des lettres Unicode, des chiffres arabes, des traits d'union, signes traits de soulignement, points et deux points. Cependant, les noms ne peuvent en aucun cas commencer par une chaîne XML. Les noms commençant par ces caractères sont réservés à l'usage du W3C. Il faut se rappeler que puisque les lettres ne se limitent pas exclusivement aux caractères ASCII, des mots de la langue maternelle peuvent être utilisés dans les noms.

La structure du document XML.

Tout document XML se compose des parties suivantes :

  • Prologue facultatif.
  • Le corps du document.
  • Un épilogue facultatif suivant l'arborescence des objets.

Examinons chacune des parties plus en détail.

Prologue d'un document XML.

Le document XML commence par un prologue. Le prologue fournit quelques conseils pour l'analyseur syntaxique XML et les applications.

Le prologue se compose de plusieurs parties :

  1. une déclaration XML facultative qui est placée entre des caractères... L'annonce contient :
    • balise xml et numéro de version (version) de la spécification XML ;
    • une indication de l'encodage des caractères (encodage) dans lequel le document est écrit (par défaut encodage = "UTF-8");
    • un paramètre standalone qui peut être "yes" ou "no" (par défaut standalone = "yes"). Une valeur de "yes" indique que le document contient toutes les déclarations d'éléments requises, et "no" indique que des DTD externes sont requises.

    Tout cela pourrait ressembler à ceci :

    .

    Il est important de noter que dans une déclaration XML, seul l'attribut version est requis ; tous les autres attributs peuvent être omis et donc prendre leurs valeurs par défaut. Il convient également de se rappeler que tous ces attributs doivent être spécifiés uniquement dans l'ordre ci-dessus.

  2. commentaires.
  3. commandes de traitement.
  4. symboles d'espace blanc.
  5. optionnel déclaration de type de document, DTD (Document Type Declaration) qui est placé entre des caractèreset peut s'étendre sur plusieurs lignes. Cette partie déclare les balises utilisées dans le document, ou fournit un lien vers le fichier dans lequel ces annonces sont enregistrées.

Après déclaration de type de document des commentaires, des commandes de traitement et des symboles d'espace blanc peuvent également suivre.

Étant donné que toutes ces parties sont facultatives, le prologue peut être omis.

Le corps du document XML.

Le corps d'un document est constitué d'un ou plusieurs éléments. Dans un document XML bien formé, les éléments forment un simple arbre hiérarchique, dans lequel les élément racine(élément racine) dans lequel tous les autres éléments du document sont imbriqués. XML impose une contrainte extrêmement importante sur les éléments — ils doivent être correctement imbriqués. Cela rend assez facile l'imbrication d'un document XML dans un autre sans casser la structure du document, tout en élément racine le sous-document devient simplement un des éléments du document dans lequel il est subdivisé. À cet égard, nous sommes confrontés à une autre limitation, à savoir que les noms des éléments doivent être uniques dans le document, car dans le document inclus, les mêmes noms que dans le document contenant peuvent avoir une signification complètement différente. Pour résoudre le problème de correspondance des noms, le concept d'espace de noms est introduit.

Le nom de l'élément racine est considéré comme le nom de l'ensemble du document et est indiqué dans la deuxième partie du prologue après le mot Doctype. Si la définition DTD se trouve à l'intérieur d'un document XML, elle est alors placée entre crochets après le nom de l'élément racine :

Cependant, généralement, une DTD est écrite pour plusieurs documents XML à la fois. Dans ce cas, il est pratique de l'écrire séparément du document, puis au lieu de crochets, l'un des mots System ou Public est écrit, suivi d'une adresse sous la forme d'un URI (Uniform Resource Identifier) ​​​​d'un fichier avec une définition DTD. À toutes fins utiles, un URI est considéré comme l'équivalent d'une URL, bien qu'en principe il puisse s'agir de n'importe quel nom unique. Une définition DTD, par exemple, pourrait ressembler à ceci :

Espaces de noms XML

Étant donné que différents documents XML peuvent contenir les mêmes noms de balises et leurs attributs, qui ont des significations complètement différentes, vous devez être capable de les distinguer d'une manière ou d'une autre. Pour ce faire, les noms de balises et d'attributs sont fournis avec un préfixe court, qui est séparé du nom par un deux-points. Le préfixe du nom est associé à un identifiant qui définit espace de noms(espace de noms). Tous les noms de balises et d'attributs avec des préfixes associés au même identifiant forment un espace de noms dans laquelle les noms doivent être uniques. Le préfixe et l'identifiant de l'espace de noms sont définis par l'attribut xmlns comme suit :

Dans ce qui suit, les noms de balises et d'attributs que l'on veut faire référence à l'espace de noms « http://URI_namespace » sont préfixés par ns, par exemple :

Novossibirsk.

L'attribut xmlns peut apparaître sur n'importe quel élément XML, pas seulement la racine. Le préfixe qu'il définit peut être appliqué à l'élément dans lequel l'attribut xmlns est écrit et à tous les éléments imbriqués. De plus, plusieurs espaces de noms peuvent être définis dans un élément. Dans les éléments imbriqués espace de noms peut être outrepassé en associant le préfixe à un identifiant différent. L'apparition d'un nom de balise sans préfixe dans un document utilisant espace de noms, signifie que le nom appartient à l'espace de noms par défaut. Les préfixes commençant par des caractères xml sont dans tous les cas réservés à XML lui-même.

Le nom, avec le préfixe, est appelé nom développé ou qualifié. La partie du nom écrite après les deux points est appelée la partie locale du nom.

XML (Extensible Markup Language) est un nouveau langage de balisage de document dérivé de SGML qui vous permet de structurer divers types d'informations à l'aide d'un ensemble arbitraire d'instructions. Les développeurs d'applications Internet essayant d'utiliser la nouvelle technologie dans la pratique peuvent être intéressés par des problèmes spécifiques liés aux problèmes de création, de traitement de documents XML et de leur affichage côté client. Cet article donne une brève idée de ce qu'est un document XML et à quoi il sert, et des exemples pratiques illustrent quelques mécanismes simples mais malheureusement peu décrits de son traitement.

Qu'est-ce que XML

Aujourd'hui, XML peut être utilisé dans toutes les applications nécessitant des informations structurées - des systèmes d'information géographique complexes avec des volumes gigantesques d'informations transmises aux programmes ordinaires "à un ordinateur" qui utilisent ce langage pour décrire les informations de service. En regardant de près le monde de l'information qui nous entoure, on peut distinguer de nombreuses tâches liées à la création et au traitement d'informations structurées, pour lesquelles XML peut être utilisé :

  • Tout d'abord, cette technologie peut être utile aux développeurs de systèmes d'information complexes, avec un grand nombre d'applications reliées par des flux d'informations de structure la plus variée. Dans ce cas, les documents XML agissent comme un format universel pour l'échange d'informations entre les composants individuels d'un grand programme.
  • XML est la norme de base pour un nouveau langage de description de ressources, RDF, qui simplifie de nombreux problèmes sur le Web liés à la recherche des informations dont vous avez besoin, au contrôle du contenu des ressources réseau, à la création de bibliothèques numériques, etc.
  • Le langage XML vous permet de décrire des données de tout type et est utilisé pour représenter des informations spécialisées telles que des formules chimiques, mathématiques, physiques, des recettes médicales, des notations musicales, etc. Cela signifie que XML peut être un puissant complément au HTML pour diffuser des informations « non standard » sur le Web. Peut-être que dans un futur très proche, XML remplacera complètement HTML, du moins les premières tentatives d'intégration de ces deux langages sont déjà en cours (spécification).
  • Les documents XML peuvent être utilisés comme format de données intermédiaire dans les systèmes à trois niveaux. En règle générale, l'interaction entre les serveurs d'applications et les bases de données dépend du SGBD spécifique et du dialecte SQL utilisé pour accéder aux données. Si les résultats de la requête sont présentés dans un format de texte universel, le lien SGBD, en tant que tel, deviendra « transparent » pour l'application. De plus, le W3C a proposé aujourd'hui une spécification pour un nouveau langage de requête de base de données, XQL, qui pourrait devenir une alternative à SQL à l'avenir.
  • Les informations contenues dans les documents XML peuvent être modifiées, transmises à la machine client et mises à jour par parties. Les spécifications XLink et Xpointer en cours de développement vous permettront de vous référer à des éléments de document individuels, en tenant compte de leurs valeurs d'imbrication et d'attribut.
  • L'utilisation de feuilles de style (XSL) vous permet de restituer des documents XML indépendamment d'un périphérique de sortie particulier.
  • XML peut être utilisé dans des applications courantes pour stocker et traiter des données structurées dans un format unique.

Un document XML est un fichier texte brut dans lequel des éléments de données sont créés à l'aide de marqueurs spéciaux, dont la séquence et l'imbrication déterminent la structure du document et son contenu. Le principal avantage des documents XML est que, avec une méthode de création et de traitement relativement simple (le texte brut peut être édité par n'importe quel processeur de test et traité par des analyseurs XML standard), ils vous permettent de créer des informations structurées que les ordinateurs "comprennent" bien.

Comment créer un document XML ?

Dans le cas le plus simple, vous n'avez besoin de rien de plus qu'un simple éditeur de texte pour créer un document XML (selon de nombreux concepteurs Web, le meilleur outil pour créer des pages Web). Voici un exemple de petit document XML utilisé à la place d'un bloc-notes classique :

Un rendez-vous d'affaires important Je dois rencontrer Ivan Ivanovitch, après l'avoir appelé au téléphone 123-12-12 ... Appeler à la maison 124-13-13

Lors de la création de votre propre langage de balisage, vous pouvez proposer n'importe quel nom d'élément (presque n'importe lequel, puisque la liste des symboles autorisés est limitée et donnée), correspondant au contexte de leur utilisation. Notre exemple n'est qu'une des nombreuses façons de créer une structure de journal. C'est la flexibilité et l'extensibilité des langages dérivés de XML - ils sont créés à la volée par le développeur, selon ses idées sur la structure du document, et peuvent ensuite être utilisés par des visualiseurs universels au même titre que n'importe quel autre XML -langues dérivées. toutes les informations requises pour l'analyse sont contenues dans le document.

Lors de la création d'un nouveau format, il est nécessaire de prendre en compte le fait qu'il ne peut y avoir en principe aucun document "écrit en XML" - dans tous les cas, les auteurs du document pour son balisage utilisent un langage XML (appelé langage dérivé de XML), mais pas XML lui-même. Par conséquent, lors de l'enregistrement du fichier créé, vous pouvez choisir pour celui-ci une extension adaptée à son nom (par exemple, noteML).

XML peut être utilisé par vous pour créer des documents d'un type et d'une structure particuliers requis pour une application particulière. Cependant, si le champ d'application du langage est suffisamment large et qu'il commence à intéresser un grand nombre de développeurs, alors sa spécification peut très bien être soumise pour examen au W3C et, après accord de toutes les parties intéressées, approuvée par le consortium. comme recommandation officielle.

Il convient de noter que le processus d'élaboration d'une nouvelle spécification est très long et compliqué. Tout document proposé par le W3C passe par plusieurs étapes avant de devenir un standard. Dans un premier temps, les souhaits et recommandations des différentes entreprises participant à son élaboration sont formalisés sous la forme d'une note notée (Note), sorte de protocole d'intention. Les informations contenues dans ces documents sont uniquement destinées à la discussion des membres du consortium et personne ne peut garantir que ces commentaires deviendront ultérieurement une recommandation.

La prochaine étape de la promotion du document est une version de travail du cahier des charges, qui est élaborée et modifiée à l'avenir par un groupe de travail spécialement créé, qui comprend des représentants d'entreprises intéressées par l'idée. Toutes les modifications apportées à ce document doivent être publiées sur le serveur du consortium www.w3.org et jusqu'à ce que la version de travail devienne une recommandation, il ne peut servir que d'"étoile directrice" pour les développeurs avec lesquels l'entreprise peut vérifier ses plans, mais pas doit être utilisé dans le développement de logiciels.

Dans le cas où les parties s'entendent sur toutes les questions principales et que des modifications importantes sont apportées au document, la version de travail devient une proposition de recommandation et après vote par les membres du groupe de travail, elle peut déjà devenir les recommandations officielles du W3C, qui en termes de statut correspond à la norme dans le WWW.

Générateurs XML

Les documents XML peuvent servir de format intermédiaire pour transférer des informations d'une application à une autre (par exemple, à la suite d'une requête de base de données), de sorte que leur contenu est parfois généré et traité automatiquement par des programmes. Il n'est pas toujours nécessaire de créer un document XML manuellement.

Supposons, par exemple, que notre tâche soit de créer un format pour stocker des données pour l'enregistrement de certains événements se produisant dans le système (fichier journal). Dans le cas le plus simple, vous pouvez vous limiter à enregistrer les demandes réussies et erronées à nos ressources - un tel document doit contenir des informations sur l'heure de l'événement, son résultat (succès / erreur), l'adresse IP de la source de la demande, la ressource URI et le code de résultat.

Notre document XML pourrait ressembler à ceci :

195.151.62.18 AVOIR / divers / 200 195.209.248.12 AVOIR /soft.htm 200

La structure du document est assez simple - l'élément racine dans ce cas est l'élément de journal, chaque événement qui se produit est enregistré dans l'élément événement et décrit à l'aide de ses attributs (la date est l'heure et le résultat est le type d'événement) et interne éléments (method est la méthode d'accès, ip-from est l'adresse source, url-to est la ressource demandée, response est le code de réponse). La génération de ce document peut être gérée par exemple par un module d'authentification des requêtes adressées au système, et exploitée par un programme de traitement des données d'inscription (log viewer).

Qu'est-ce que la DTD ?

Nous avons donc créé un document XML et nous nous sommes assurés que l'ensemble de balises utilisé dans ce cas nous permet d'effectuer toute manipulation avec nos informations. Dans ce cas, afin d'établir les règles de notre nouveau langage, c'est-à-dire une liste d'éléments valides, leur contenu et leurs attributs possibles, nous devons créer des définitions de DTD (au moment de la rédaction de cet article, la spécification des documents XML n'a pas encore été approuvée et jusqu'à présent, les DTD sont le seul moyen standard de décrire la grammaire).

Un petit exemple pour notre document XML :

Enregistrez ce fichier sous log.dtd et incluez une nouvelle ligne dans le document XML :

Désormais, lors du traitement d'un document, l'analyseur XML vérificateur vérifiera l'ordre de définition des éléments et de leurs attributs avec la façon dont il est spécifié dans nos notations DTD et, en cas de violation de la structure interne (qui détermine la "sémantique " du document), il émettra un message d'erreur.

Que sont les espaces de noms ?

Comme mentionné précédemment, la beauté de l'utilisation de XML réside dans la possibilité de créer vos propres balises, dont les noms correspondent le mieux à l'objectif visé. Mais l'imagination et le vocabulaire des gens ne sont pas illimités, il n'y a donc absolument aucune garantie que les noms d'éléments que vous donnez ne seront pas utilisés par quelqu'un d'autre. Tant que votre application ne traite que des documents XML natifs, il n'y aura pas de problème. Mais il est fort possible qu'un même document contienne des informations pour plusieurs gestionnaires en même temps. Dans ce cas, les noms de certains éléments ou leurs attributs peuvent coïncider, ce qui provoquera soit une erreur dans l'analyseur XML, soit une présentation incorrecte du document. Par exemple, dans notre cas, l'élément event pourrait très bien être utilisé pour enregistrer d'autres événements et être géré par une autre application.

Pour remédier à cette situation, nous devons définir des noms uniques pour les éléments et leurs attributs, en ajoutant un préfixe universel non répétitif à leurs noms habituels. Pour cela, le mécanisme des Namespaces est utilisé (Namespaces a été officiellement approuvé par le W3C en janvier 1999 et fait désormais partie du standard XML). Selon cette spécification, pour définir la "portée" d'une balise (en fait, ce terme, largement utilisé dans les langages de programmation conventionnels, est inapplicable en XML, car en tant que tel il n'y a pas d'ensemble sur lequel une "portée" pourrait être construite à l'intérieur un document XML structuré), il est nécessaire de définir un attribut unique décrivant le nom de l'élément, par lequel l'analyseur de document peut déterminer à quel groupe de noms il appartient (les identifiants d'espace de noms peuvent être utilisés pour décrire les noms uniques des deux éléments et de leurs les attributs). Dans notre dernier exemple, cela peut être fait comme ceci :

195.151.62.18

AVOIR

/ divers /

200

195.209.248.12

AVOIR

/soft.htm

200

L'unicité de l'attribut name garantit que certains identificateurs de ressources uniformes (tels que l'URI ou l'ISBN) sont utilisés comme valeur.

Vous pouvez trouver des informations complètes sur l'utilisation de Namespace dans cette norme. À l'avenir, pour simplifier les exemples, nous utiliserons l'espace de noms - sauter les descriptions.

Outils

Traitement des documents XML

Le principal facteur limitant dans l'avancement de la technologie XML sur le Web aujourd'hui est le manque de prise en charge complète de ce format par tous les fabricants de navigateurs - les programmes les plus souvent utilisés côté client. Un moyen de sortir de cette situation peut être une variante dans laquelle le côté serveur s'occupe du traitement des documents XML. En utilisant n'importe quel analyseur XML existant, vous pouvez générer les informations nécessaires déjà sur le serveur et envoyer un document HTML normal au client. Cependant, cette méthode est bien entendu moins flexible et permet d'utiliser la technologie XML uniquement pour stocker des informations structurées, mais pas pour les modifier dynamiquement côté client.

En août 1997, la RFC 2376 a approuvé les types MIME pour les ressources XML : text/xml et application/xml. Par conséquent, les documents XML peuvent être transmis via HTTP et affichés par l'utilisateur comme des pages HTML normales. Pour ce faire, vous devez modifier légèrement la configuration du serveur Web (dans Apache - ajouter la ligne "text/xml xml ddt" au fichier mime.types), et du côté client disposer d'un navigateur prenant en charge les feuilles de style ou JavaScript . Aujourd'hui, ces navigateurs incluent Microsoft Internet Explorer 5, le premier navigateur à prendre en charge la spécification XML 1.0 et les feuilles de style XSL ; le navigateur Amaya, proposé par le consortium spécifiquement à des fins de test () et prenant en charge presque toutes les normes W3C en développement. La prise en charge de XML est également prévue pour les futures versions de Netscape Navigator.

Modèle d'objet de document DOM

L'une des interfaces les plus puissantes pour accéder au contenu des documents XML est le DOM.

Le modèle objet des documents XML est une représentation de sa structure interne sous la forme d'une collection d'objets définis. Pour plus de commodité, ces objets sont organisés en une structure de données arborescente - chaque élément du document peut être affecté à une branche distincte, et tout son contenu, sous la forme d'un ensemble d'éléments imbriqués, de commentaires, de sections CDATA, etc. . est représenté dans cette structure par des sous-arbres. Parce que tout document XML bien formé définit nécessairement un élément principal, alors tout le contenu peut être considéré comme des sous-arbres de cet élément principal, dans ce cas appelé la racine de l'arbre du document. Pour le document XML suivant :

texte texte

La représentation objet de la structure du document n'est pas nouvelle pour les développeurs. Pour accéder au contenu d'une page HTML dans des scripts, une approche orientée objet a été utilisée pendant longtemps - les éléments d'un document HTML disponibles pour Java Script ou VBScript pouvaient être créés, modifiés et visualisés à l'aide des objets correspondants. Mais leur liste et leur ensemble de méthodes changent constamment et dépendent du type de navigateur et de la version de la langue. Afin de fournir une interface pour accéder au contenu de document structuré, indépendant d'un langage de programmation et d'un type de document spécifiques, au sein du consortium W3, la spécification du modèle objet DOM niveau 1 a été développée et officiellement approuvée.

Le DOM est une spécification pour un accès universel indépendant de la plate-forme et du logiciel au contenu des documents et est simplement une sorte d'API pour leurs processeurs. Le DOM est le moyen standard de construire un modèle objet de tout document HTML ou XML, avec lequel vous pouvez rechercher les fragments souhaités, créer, supprimer et modifier ses éléments.

Pour décrire les interfaces d'accès au contenu des documents XML dans la spécification DOM, le langage IDL indépendant de la plate-forme est utilisé, et pour les utiliser, il est nécessaire de "traduire" dans un langage de programmation spécifique. Cependant, les créateurs des analyseurs eux-mêmes sont engagés dans cette tâche, nous ne savons peut-être rien de la façon dont les interfaces sont implémentées - du point de vue des développeurs d'applications, le DOM ressemble à un ensemble d'objets avec certaines méthodes et propriétés. Dans la section suivante, nous examinerons rapidement le modèle objet Microsoft Internet Explorer 5 disponible à partir des scripts Java Script et VBScript.

XML (eXtensible Markup Language) est un dialecte simplifié de SGML pour décrire des structures de données hiérarchiques sur le World Wide Web. Il a été développé par le groupe de travail W3C depuis 1996 ; la recommandation actuellement acceptée est la deuxième édition de XML 1.0 (octobre 2000), qui fait l'objet d'une discussion plus approfondie.

XML est sans doute l'une des technologies les plus prometteuses sur le WWW, ce qui explique l'intérêt qui lui est porté tant par les sociétés de développement que par le grand public. Avant de procéder à sa description, il semble approprié de discuter des raisons de son apparition et de son développement rapide ultérieur. Pour cela, nous allons essayer d'examiner les problèmes WWW qui doivent être résolus au moyen d'une nouvelle génération de technologies Web.

HTML ne transmet pas le sens des documents. HTML a été créé pour décrire structure documents (titre, rubriques, listes, paragraphes, etc.) et, dans une certaine mesure, les règle affichage(gras, italique, etc.). Il n'est en aucun cas destiné à décrire sens documents écrits dessus, et dans de nombreux cas ce sont les données qui constituent l'essence du document, qu'il s'agisse d'un rapport boursier ou d'une publication scientifique. Par conséquent, il existe un besoin d'un langage pour décrire des données, de plus, des données organisées en structures hiérarchiques. Le HTML est lourd et rigide. Ces dernières années, le HTML est devenu un fouillis de balises qui se dupliquent souvent les unes les autres et n'apportent pas du tout de clarté au texte du document. Si vous ajoutez ici les extensions HTML non standard dont tous les développeurs de navigateurs sont coupables, alors la création de documents HTML plus ou moins complexes devient une tâche sérieuse. D'un autre côté, un ensemble de balises une fois pour toutes n'est souvent pas assez flexible pour exprimer le contenu dont nous avons besoin. Le concept du navigateur Web est trop limité. Avec l'avènement des applets Java, des langages de script et des contrôles ActiveX, les navigateurs Web ne sont plus de simples « affichages » de documents HTML ; aujourd'hui, ils ressemblent davantage à des programmes qui lancent des applications spécifiques. Cependant, le concept même de navigateur impose des restrictions inutiles à l'utilisateur ; dans de nombreux cas, nous avons besoin Applications orientées Web, c'est-à-dire des programmes capables de lire des informations spécialisées sur les sites Web et de nous les fournir sous la forme habituelle, par exemple sous forme de feuilles de calcul. La recherche de documents renvoie trop de liens. Nous utilisons tous les moteurs de recherche tout le temps et les maudissons constamment pour les inconvénients de notre travail. Disons que j'ai besoin de tous les textes des livres de Sergueï Dovlatov disponibles sur le Web. Une tentative de recherche par le nom de l'auteur aboutira à une liste de tous les liens portant ce nom, y compris les souvenirs de Dovlatov, les critiques de ses livres, etc. Il serait beaucoup plus pratique d'utiliser une balise spéciale pour indiquer ce que je recherche exactement. Impossible de trouver les ressources associées. Supposons maintenant que j'aie trouvé plusieurs histoires de Dovlatov, qui constituent manifestement un seul et même recueil. C'est bien s'ils contiennent un lien vers la table des matières, mais souvent ce n'est pas le cas. Par conséquent, un moyen est nécessaire pour indiquer qu'un groupe de pages donné est une ressource unique et doit être traité en conséquence. Cela nécessite un système standardisé et développé méta-écrivains Les pages Web.

XML est une tentative de résoudre ces problèmes en créant un langage de balisage simple qui décrit des données structurées arbitraires. Plus précisément, c'est un métalangage dans lequel sont écrits des langages spécialisés qui décrivent des données d'une certaine structure. De telles langues sont appelées Dictionnaires XML... Contrairement au HTML, XML ne fournit aucune indication sur la manière dont les données décrites dans le document XML doivent être affichées. La façon dont les données sont affichées pour différents appareils est déterminée par le langage de description de style XSL, qui joue à peu près le même rôle pour XML que CSS pour HTML. Une autre différence fondamentale par rapport au HTML est que XML peut contenir toutes les balises que les créateurs du dictionnaire XML souhaitent utiliser. Voici une liste de quelques langages spécialisés basés sur XML qui sont actuellement à divers stades de développement par les groupes de travail du W3C :

  • MathML est un langage de formules mathématiques ;
  • SMIL - Langage d'intégration et de synchronisation multimédia ;
  • SVG est un langage graphique vectoriel 2D ;
  • RDF - langage de méta-description des ressources ;
  • XHTML est une reformulation du HTML en termes de XML.

Le processus de traitement d'un document XML est le suivant. Son texte est analysé par un programme spécial appelé processeur XML... Le processeur XML ne sait rien de la sémantique des données du document ; il analyse uniquement le texte du document et le valide par rapport aux règles XML. Si le document correctement encadré(bien formé), alors les résultats de l'analyse du texte sont transmis par le processeur XML au programme d'application, qui effectue leur traitement significatif ; si le document est formaté de manière incorrecte, c'est-à-dire qu'il contient des erreurs de syntaxe, le processeur XML doit en informer l'utilisateur.

8.1.2. Applications XML

La question se pose : à quoi bon utiliser une « langue vide » dépourvue de son propre contenu ? Le fait est que, malgré son apparente simplicité, XML dispose de mécanismes assez sophistiqués pour contrôler l'exactitude des données, permet de vérifier les relations hiérarchiques au sein d'un document et, surtout, établit une norme unique pour les documents stockant des données, quelle que soit la nature de ces données. . Examinons de plus près certaines des utilisations du langage XML.

Traitement de données traditionnel Les capacités énumérées ci-dessus nous permettent de considérer XML comme un standard indépendant de la plate-forme pour stocker et présenter des informations, qui, en combinaison avec d'autres technologies modernes (en particulier avec les technologies Java), peut devenir la base pour créer des applications indépendantes de la machine, y compris pour l'échange de données entre le serveur et le client. De plus, les langages de requête basés sur XML qui sont activement développés aujourd'hui peuvent sérieusement concurrencer le langage SQL. Programmation axée sur les documents Les documents XML peuvent servir de conteneurs pour créer des applications à partir d'interfaces et de composants existants. Dans ce cas, le document est constitué de liens vers des composants d'interface utilisateur et des modules de traitement de données, qui sont liés lors de l'affichage de la page à l'écran. Composants d'archivage La programmation moderne est basée sur l'utilisation de composants, qui, idéalement, devraient être facilement assemblés en un seul ensemble à l'aide d'un simple codage supplémentaire. La base pour cela est l'archivage des composants, qui, à son tour, nécessite une approche uniforme de leur stockage et de leur utilisation ultérieure. Tout porte à croire que dans un futur proche, les documents XML seront une alternative au stockage commun de composants sous forme de modules binaires. Injection de données Une fois que nous avons défini la structure de données XML, il est fondamentalement facile d'écrire un générateur de code qui traite les données. Avec le développement de tels outils logiciels, tous les traitements de routine des données (y compris la validation de leur exactitude, leur présentation dans le format souhaité, etc.) peuvent être automatisés, permettant aux développeurs de se concentrer sur les parties non standard du produit en cours de création.

8.1.3. Structure des documents XML

Un document XML est composé de déclarations, d'éléments, de commentaires, de caractères spéciaux et de directives. Toutes ces parties du document sont décrites dans ce chapitre.

8.1.3.1. Éléments et attributs

XML est langue des balises balisage des documents. En d'autres termes, tout document XML est un ensemble éléments, et le début et la fin de chaque élément sont indiqués par des marques spéciales appelées Mots clés.

Un élément comporte trois parties : une balise de début, un contenu et une balise de fin. Une balise est du texte entre crochets "<" и ">". La balise de fin a le même nom que la balise de début, mais commence par une barre oblique" / ". Exemple d'élément XML :

Sergueï Dovlatov

Les noms d'éléments sont sensibles à la casse, c'est-à-dire , et Sont les noms des divers éléments. La balise de fin est toujours requise. Si la balise est vide, c'est-à-dire qu'il n'a pas de contenu et pas de balise de fermeture, alors il a une forme spéciale :

<элемент/>

Tout élément peut avoir les attributs contenant des informations supplémentaires sur l'article. Les attributs sont toujours inclus dans la balise de début d'un élément et ressemblent à ceci :

Attribute_name = "attribute_value"

L'attribut doit avoir une valeur, qui doit toujours être entourée de guillemets simples ou doubles. Les noms d'attribut sont également sensibles à la casse. Un exemple d'élément qui a un attribut :

Sergueï Dovlatov

Les éléments doivent soit se succéder, soit être imbriqués les uns dans les autres :

Partie du discours Brodsky, Joseph Marche des solitaires Dovlatov, Sergueï

Ici, l'élément books contient deux éléments book imbriqués, qui, à leur tour, ont l'attribut isbn et contiennent trois éléments séquentiels : title (title), author (author) et present (present), ce dernier étant vide. , car dans ce cas il correspond à un indicateur booléen.

D'après la description ci-dessus, vous pouvez voir que la syntaxe XML ressemble à la syntaxe HTML (ce qui est naturel, car ce sont tous deux des dialectes du même langage SGML), mais les exigences pour formater des documents XML corrects sont plus élevées. Une autre différence très importante entre XML et HTML est que le contenu des éléments, c'est-à-dire tout ce qui se trouve entre les balises de début et de fin, est considéré comme une donnée. Cela signifie que XML n'ignore pas les espaces et les sauts de ligne comme le fait HTML.

8.1.3.2. Prologue et directives

Tout document XML se compose de prologue et élément racine, Par example:

Marche des solitaires Dovlatov, Sergueï

Dans cet exemple, le prologue est réduit à un seul directif (première ligne du document) indiquant la version XML. Il est suivi d'un élément XML au nom unique qui contient tous les autres éléments et s'appelle la racine. Une instruction de traitement est une expression entourée de balises spéciales "", qui contient des instructions pour le programme qui traite le document XML.

La norme XML ne réserve qu'une seule directive qui spécifie la version de XML à laquelle ce document correspond (il n'y a pas encore de deuxième version de XML). En fait, cette directive est un peu plus riche et dans sa forme la plus générale ressemble à ceci :

Ici, l'attribut encoding spécifie le codage de caractères du document. Par défaut, les documents XML sont supposés être générés au format UTF-8 ou UTF-16. Si un autre codage de caractères est utilisé, son nom conformément au Tableau A7.1 doit être indiqué dans cet attribut, comme indiqué dans l'exemple. L'attribut standalone indique si le document donné contient. Une valeur yes signifie qu'il n'y a pas de telles sections, une valeur no signifie qu'elles le sont.

8.1.3.3. Commentaires (1)

Les documents XML peuvent contenir commentaires qui sont ignorés par l'application traitant le document. Les commentaires sont construits selon les mêmes règles qu'en HTML :

  • commencer le commentaire avec des symboles "",
  • n'utilisez pas de caractères "-" dans le commentaire.

Exemple de commentaires :

8.1.3.4. Noms et données

Tout noms Les éléments, attributs et sections doivent commencer par une lettre Unicode et se composer de lettres, de chiffres, de points (.), de traits de soulignement (_) et de tirets (-). La seule limitation est qu'ils ne doivent en aucun cas commencer par une combinaison de lettres XML ; ces noms sont réservés pour de futures extensions de la langue. Il est essentiel que la norme permette l'utilisation dans les noms non seulement de lettres anglaises, mais aussi tous les autres, bien que les processeurs XML existants soient souvent limités aux systèmes de codage qui y sont définis par les créateurs. Par conséquent, nous écrivons les noms en anglais dans nos exemples.

Données c'est-à-dire que le contenu des éléments et les valeurs d'attribut peuvent être des caractères autres que ceux répertoriés dans la section suivante.

8.1.3.5. Symboles spéciaux

Un certain nombre de caractères en XML sont réservés et doivent être représentés de manière particulière :

Si vous le souhaitez, vous pouvez utiliser le codage de caractères numériques dans la norme Unicode. Dans ce cas, le symbole peut être spécifié par son code décimal ( le code; ) ou code hexadécimal ( le code; ). par exemple © représente le symbole du droit d'auteur © , une UNE- lettre russe UNE... Comme nous le verrons plus tard, XML est beaucoup plus riche que HTML dans l'utilisation de telles constructions, car il permet la substitution de n'importe quelle expression symbolique dans le texte des documents.

8.1.3.6. Sections CDATA

Une autre façon d'inclure des caractères invalides dans le contenu des éléments XML consiste à utiliser le soi-disant. Sections CDATA(abréviation de Character DATA, c'est-à-dire données de caractère). Disons que nous voulons faire du contenu de l'élément de mise en page un morceau de texte HTML, par exemple :

Titre

Cette construction est incorrecte car la balise HTML H1 sera interprétée comme une balise XML dans ce cas. Pour que tout le contenu de l'élément de mise en page soit traité comme des données, nous devons l'envelopper dans une section CDATA :

Comme nous pouvons le voir dans cet exemple, la section CDATA est entourée de délimiteurs... Tout ce qui se trouve dans cette section est considéré comme des données de caractère ; en particulier, les sections CDATA ne peuvent pas être imbriquées les unes dans les autres.

8.1.4. Sections et leurs déclarations

8.1.4.1. Sections d'un document XML

Physiquement, un document XML peut être constitué de plusieurs sections(entités). Dans ce cas, l'élément racine du document est également une section appelée partie du document, bien qu'il ne soit pas spécialement décoré. Toutes les sections ont un contenu ; tous, à l'exception de la section document et de la DTD externe, ont un nom.

Du point de vue de l'analyse du document, les sections sont divisées en sections analysées et non analysées. Section non analysée(entité non analysée) est une ressource dont le contenu est traité comme des données externes par le processeur XML sans l'analyser (par exemple, du texte qui n'est pas un document XML). Les sections non analysées ont toujours notation indiquant leur format. Sections analysées(entités analysées) sont destinées à la substitution textuelle : chaque fois qu'un processeur XML rencontre le nom d'une telle section dans un document, il le remplace par le contenu de cette section.

8.1.4.2. Sections internes

Les déclarations de section sont subdivisées en interne et externe. Déclaration de section interne Ressemble à ça:

Il inclut le contenu de l'objet (valeur du paramètre) et permet de substituer cette valeur au nom de la section. Par exemple, on peut introduire l'attribut genre et utilisez des sections internes pour définir le genre :

]> Partie du discours Brodsky, Joseph Marche des solitaires Dovlatov, Sergueï

Cet exemple montre que lien vers la rubrique (référence d'entité) ressemble exactement à une référence de caractère spécial, c'est-à-dire qu'elle ressemble à & name; ... En fait, les caractères spéciaux sont exactement les mêmes références, mais les sections correspondantes sont spécifiées implicitement dans la déclaration XML interne. De telles substitutions de texte sont pratiques pour spécifier des abréviations qui réduisent le volume du document et pour introduire des symboles pour les champs de document fréquemment modifiés. Ainsi, par exemple, nous pouvons déplacer dans la section interne la date de la prochaine révision de la publication puis modifier uniquement la valeur de cette section.

8.1.4.3. Sections externes

Il y a deux options déclarations de section externe:

La première option s'appelle partition système, la deuxième - partie publique... Ils associent tous les deux un nom de section à une ressource externe spécifiée par son URI, qui doit être encodée et ne pas contenir. L'URI de la ressource externe est appelée identifiant de partition système... Le recours à une ressource externe dépend de plusieurs facteurs :

  • Si la déclaration contient un paramètre NDATA spécifiant la notation de la section, la section n'est pas analysée.
  • Si le paramètre NDATA n'est pas spécifié, la section est analysée et la ressource correspondante doit être un document XML. Cela signifie qu'au lieu de faire référence à une section, le texte de la ressource correspondante sera inclus dans le texte du document.
  • La section publique peut contenir une chaîne spécifiant identifiant public de la section... Un processeur XML peut utiliser cet identifiant pour générer un autre URI pour cette section. S'il échoue, il doit alors utiliser l'identifiant système pour charger le contenu de la section.

Exemples de déclarations de ressources externes :

La section externe analysée doit commencer par une directive, qui peut ne pas contenir de numéro de version, mais doit contenir un codage de caractères. Cette directive ne fait pas partie du texte en ligne.

8.1.5. Déclaration de type de document

Déclaration de type de document XML(déclaration de type de document) contient définition du type de document(définition du type de document, DTD) ou pointe vers celui-ci. DTD est une grammaire spéciale qui décrit la syntaxe d'une classe particulière de documents ; les règles de création d'une DTD sont discutées au Ch. 8.2. Il ne décrit que les déclarations qui donnent accès à la DTD. Une déclaration de type de document, comme une déclaration de section, peut être interne ou externe. La déclaration interne ressemble à :

et l'extérieur a les mêmes deux options que les cloisons extérieures :

Ainsi, la différence entre une déclaration de type de document et une déclaration de section est seulement que :

  • il commence par le mot-clé ! DOCTYPE, pas! ENTITY ;
  • il peut avoir un corps entre crochets.

Le nom d'une telle déclaration doit correspondre au nom de l'élément racine qu'elle décrit, et le corps doit être conforme aux règles de construction de la DTD et sera décrit au Ch. 8.2. Pour l'instant, notez qu'il peut contenir des déclarations de section. Un exemple de déclaration interne a été donné dans. Exemples de déclarations externes :

Notez qu'une déclaration de type de document externe peut également contenir une référence à une DTD appelée sous-ensemble externe DTD, et un corps qui décrit les ajouts à la DTD externe (il s'appelle sous-ensemble interne DTD).

8.1.6. Exemple de document XML

Pour rassembler tous les concepts décrits ci-dessus en un tout cohérent, voici un exemple de document XML complet contenant une grille tarifaire en librairie.

]> La marche des maudits Sergueï Dovlatov 60.00 Partie du discours Joseph Brodsky 55.00 Antigone Sophocle 103.50

Le saviez-vous, quelle est la fausseté du concept de « vide physique » ?

Vide physique - le concept de physique quantique relativiste, par lequel ils désignent l'état d'énergie (fond) le plus bas du champ quantifié, qui a un moment nul, un moment angulaire et d'autres nombres quantiques. Les théoriciens relativistes appellent un vide physique un espace complètement dépourvu de matière, rempli d'un champ non mesurable, et donc seulement imaginaire. Un tel état, selon les relativistes, n'est pas un vide absolu, mais un espace rempli de quelques particules fantômes (virtuelles). La théorie quantique relativiste des champs affirme que, conformément au principe d'incertitude de Heisenberg, virtuelles, c'est-à-dire apparentes (à qui ?), des particules naissent et disparaissent constamment dans le vide physique : des oscillations de champ dites de point zéro se produisent. Les particules virtuelles du vide physique, et donc, elle-même, par définition, n'ont pas de cadre de référence, car sinon le principe de relativité d'Einstein, sur lequel est basée la théorie de la relativité, serait violé (c'est-à-dire un système absolu de la mesure deviendrait possible en référence à des particules d'un vide physique, ce qui, à son tour, réfuterait sans équivoque le principe de relativité, sur lequel le SRT est construit). Ainsi, le vide physique et ses particules ne sont pas des éléments du monde physique, mais seulement des éléments de la théorie de la relativité, qui n'existent pas dans le monde réel, mais uniquement dans des formules relativistes, violant le principe de causalité (surgir et disparaître pour aucun raison), le principe d'objectivité (des particules virtuelles peuvent être considérées, selon le désir du théoricien, existantes ou non), le principe de mesurabilité réelle (non observables, n'ont pas leur propre IRS).

Lorsque tel ou tel physicien utilise le concept de « vide physique », soit il ne comprend pas l'absurdité de ce terme, soit il est fallacieux, étant un adepte caché ou explicite de l'idéologie relativiste.

La façon la plus simple de comprendre l'absurdité de ce concept est de se référer aux origines de son origine. Elle est née par Paul Dirac dans les années 30, lorsqu'il est devenu évident que la négation de l'éther à l'état pur, comme l'a fait le grand mathématicien, mais le physicien médiocre, n'était plus possible. Trop de faits contredisent cela.

Pour défendre le relativisme, Paul Dirac a introduit le concept aphysique et illogique d'énergie négative, puis l'existence d'une "mer" de deux énergies se compensant dans le vide - positive et négative, ainsi qu'une "mer" de particules se compensant chacune autre - électrons et positrons virtuels (c'est-à-dire apparents) dans le vide.

Vous avez aimé l'article ? Partager avec des amis: