Je me demandais pourquoi XML avait un L dans son nom.
En soi, XML ne "fait" rien. C'est juste un format de stockage de données, pas une langue! Les langues "font" des choses.
Pour que XML fasse "faire" des choses, pour en faire un langage propre, vous devez ajouter des xmlns
attributs à son élément racine. Alors seulement, il dit à son environnement de quoi il parle.
Un exemple est XHTML. Il est actif, il contient des liens, des liens hypertextes, des styles, etc., tous déclenchés par le fichier xmlns
. Sans cela, un fichier XHTML ne représente qu'un ensemble de données dans des nœuds de balisage.
Alors pourquoi XML est-il appelé langage? Il ne décrit rien, il n'interprète pas, c'est juste.
Edit: Peut-être que ma question aurait dû être plus large. Comme la réponse est actuellement "parce que XML a été nommé d'après SGML, qui s'appelle GML, etc.", la question aurait dû être de savoir pourquoi les langages de balisage (comme XML) sont appelés langages?
Oh, et WRT les votes serrés: non, je ne parle pas du X. Je parle du L!
la source
Réponses:
La vraie réponse est que XML a un L dans son nom car un gars nommé Raymond L orie faisait partie des concepteurs du premier "langage de balisage" chez IBM dans les années 1970. Les développeurs ont dû trouver un nom pour le langage, ils ont donc choisi GML, car ce sont les initiales des trois développeurs (Goldfarb, Mosher et Lorie). Ils ont ensuite créé le langage de balisage généralisé backronym .
Ceci est devenu plus tard normalisé sous le nom de SGML ( Standardized General Markup Language ), et lors de la création de XML, les développeurs ont voulu conserver le suffixe ML pour indiquer la relation familiale avec SGML et ils ont ajouté le X devant parce qu'ils le trouvaient cool. (Même si cela n'a pas vraiment de sens - XML est un méta-langage qui permet de définir des langages extensibles, mais XML n'est pas vraiment extensible lui-même.)
En ce qui concerne votre deuxième question si XML peut légitimement être appelé un langage:
Tout format textuel structuré (ou même binaire) pouvant être traité par calcul peut être appelé langage. Une langue ne "fait" rien en tant que tel, mais certains logiciels peuvent traiter les entrées dans la langue et "faire" quelque chose en fonction de celle-ci.
Vous notez que XML est un "format de stockage" ce qui est vrai, mais un format de stockage textuel peut être appelé langage, ces termes ne s'excluant pas mutuellement.
Les langages de programmation sont un sous-ensemble de langages. Par exemple, HTML et CSS sont des langages mais pas des langages de programmation , alors que JavaScript est un vrai langage de programmation. Cela dit, il n’existe pas non plus de définition formelle du langage de programmation et il existe une grande zone grise de langages que l’on peut appeler soit formats de données, soit langages de programmation, selon votre point de vue.
Compte tenu de cela, XML est clairement un langage. Ce n’est tout simplement pas un langage de programmation - bien qu’il puisse être utilisé pour définir des langages de programmation tels que XSLT.
Votre remarque sur les espaces de noms est sans importance. Les espaces de noms sont une fonctionnalité facultative de XML et ne modifient pas la sémantique d'un vocabulaire XML. Il suffit de lever l’ambiguïté des noms d’élément si le format peut contenir plusieurs vocabulaires.
Edit: Reinierpost a fait remarquer que vous aviez peut-être eu autre chose à dire avec la question que ce que j'ai compris. Peut-être avez-vous voulu dire que les vocabulaires spécifiques tels que XHTML, RSS, XSLT, etc. sont des langages, car ils associent des éléments et des attributs à une sémantique particulière, mais le standard XML lui-même ne définit aucune sémantique pour des éléments et des attributs spécifiques. vrai langage ".
Ma réponse à cette situation serait que XML ne définir à la fois la syntaxe et la sémantique, il définit simplement à un niveau différent. Par exemple, il définit la syntaxe des éléments et des attributs, ainsi que des règles sur la manière de les traiter. XML est un "métalangage" qui est toujours une sorte de langage (tout comme les métadonnées sont encore des données!). A titre d'exemple, EBNF est aussi clairement un langage, mais son but est de définir la syntaxe d'autres langages, il s'agit donc également d'un métalangage.
la source
Parce que c'est une langue. Un langage de balisage , pas un langage de programmation.
Notez que les langues humaines naturelles comme l'anglais et l'espagnol ne «font» rien non plus. En fait, techniquement, C ++, Java, etc., ne "font" rien tant qu'ils ne sont pas introduits dans un compilateur et que la sortie est exécutée. Faire des choses et être une langue sont en grande partie orthogonaux les uns aux autres.
la source
</nitpick>
Quoi qu'il en soit, bonne réponse!Soit Σ un ensemble fini de symboles non vides, appelé alphabet . Alors Σ * est l’ensemble infini dénombrable de mots finis qui peuvent être formés en concaténant zéro ou plusieurs symboles de. Tout sous-ensemble bien défini L * est un langage .
Appliquons ceci à XML. Son alphabet est le jeu de caractères Unicode U , qui est non vide et fini. Toute concaténation de zéro ou de plusieurs caractères Unicode n’est pas un document XML bien formé, par exemple, la chaîne
est clairement pas. Le sous-ensemble XML ⊂ U * qui forme des documents XML bien formés est décidable (ou «récursif»). Il existe une machine (algorithme ou programme informatique) qui prend en entrée n'importe quel mot w ∈ U * et après un laps de temps fini, renvoie 1 si w ∈ XML et 0 sinon. Un tel algorithme est une sous-routine de tout logiciel de traitement XML. Toutes les langues ne sont pas décidables. Par exemple, l’ensemble des programmes C valides qui se terminent dans un laps de temps déterminé n’est pas (c’est ce que l’on appelle le problème d’arrêt). Lorsque l’on conçoit une nouvelle langue, il est important de décider si elle doit être aussi puissante que possible ou si l’expressivité serait mieux restreinte en faveur de la décidabilité.
Certaines langues peuvent être définies à l'aide d'une grammaire dite productrice . Une grammaire comprend
Tout mot composé exclusivement de littéraux et pouvant être dérivé en commençant par le symbole de départ, puis en appliquant les règles données, appartient à la langue produite par la grammaire.
Selon les règles élaborées que vous autorisez dans votre grammaire, des machines sophistiquées différentes sont nécessaires pour prouver qu'un mot donné peut réellement être produit par la grammaire. L'exemple donné ci-dessus est une grammaire régulière , la plus simple et la moins puissante. La prochaine classe puissante de grammaires s'appelle sans contexte . Ces grammaires sont également très simples à vérifier. XML (à moins que j'ignore une fonction obscure dont je ne suis pas au courant) peut être décrit par une grammaire sans contexte. La classification des grammaires forme la hiérarchie de Chomsky des grammaires (et donc des langues). Toute langue pouvant être décrite par une grammaire est au moins semi-décidable(ou "récursivement énumérable"). C'est-à-dire qu'il existe une machine qui, étant donné un mot qui appartient réellement à la langue, tire la preuve qu'elle peut être produite par la grammaire en un temps fini et ne produira jamais une preuve fausse. Une telle machine s'appelle un vérificateur . Notez que la machine peut ne jamais s'arrêter quand on vous donne un mot qui n'appartient pas réellement à la langue. Il est clair que nous souhaitons que nos langages de programmation soient décrits par des grammaires moins puissantes, afin de pouvoir rejeter les programmes non valides dans un temps fini.
Les schémas sont un ajout au XML qui permet d'affiner l'ensemble des documents bien formés. Un document bien formé qui suit un certain schéma est appelé valide en fonction de ce schéma. Par exemple, la chaîne
est un document XML bien formé mais pas un document XHTML valide. Il existe des schémas pour XHTML , SVG , XSLT et quoi encore. La validation de schéma peut également être effectuée par un algorithme dont l’arrêt après chaque étape est limité pour chaque entrée. Un tel programme s'appelle un validateur ou un analyseur de validation. Les schémas sont définis par les langages de définition de scema , qui permettent de définir formellement les grammaires. XSD est le langage officiel de définition de schéma pour XML et est lui-même basé sur XML. RELAX NG est une alternative plus élégante, beaucoup plus simple et légèrement moins puissante que XSD.
Comme vous pouvez définir vos propres schémas, XML est appelé un langage extensible , qui est l’origine du «X» dans «XML».
Vous pouvez définir un ensemble de règles donnant une interprétation aux documents XML sous forme de descriptions de programmes informatiques. XSLT, mentionné précédemment, est un exemple d'un tel langage de programmation construit avec XML. Plus généralement, vous pouvez sérialiser l'arborescence de syntaxe abstraite de presque tous les langages de programmation en XML, si vous le souhaitez.
la source
En informatique, le langage formel n'est qu'un ensemble de chaînes, généralement infinies et souvent décrites à l'aide de règles (deux versions courantes de ces règles sont les expressions régulières et les grammaires formelles ).
Notez que cela signifie que tout ce dont une langue a besoin est sa syntaxe , elle n'a pas besoin de décrire ce que chaque chaîne valide signifie (cela s'appelle une sémantique ).
Maintenant, cela signifie que les langages de programmation sont des langages formels qui ont aussi une sémantique, qui décrit certains calculs. Par exemple, XHTML est un langage formel dont la sémantique décrit (de manière approximative et informelle) l’aspect et le comportement d’un document hypertexte.
XML est toujours un langage, même s'il ne possède pas de sémantique (contrairement à de nombreux langages dérivés de XML, comme XHTML et XAML).
Techniquement, les formats binaires sont aussi des langages, mais ils ne s'appellent pas ainsi. Le terme "langue" est réservé aux formats lisibles par l'homme.
la source
Une langue est une méthode de transmission d'informations.
Un langage de programmation est une méthode de transmission d’algorithmes.
Un langage de balisage tel que XML est un langage de transmission de données.
la source
XML est une méta-langue. Vous l'utilisez pour définir des langues spécifiques. Les langues ne font jamais rien, elles nous permettent simplement d'exprimer des choses. En outre, il n'est pas vrai que XML soit un "langage de stockage". Tout le contraire, en fait. Vous pouvez stocker des documents XML comme bon vous semble. XML est mieux considéré comme un langage de transfert. PS Si vous pensez que XML ne "fait" rien, vous devrez expliquer comment de nombreux systèmes (par exemple, une jetée) utilisent XML comme (mauvais) langage de programmation. C'est un abus lamentable de XML, mais il existe à l'état sauvage, et ce n'est qu'un exemple parmi d'autres.
la source