Intégrer les DOM avec XHTML Generation

XSLT applicabilité à des applications Web traditionnel est limité par son exigence d'un document XML source. Si votre organisation n'a pas déployé d'XML déjà, cette mai être d'une utilité limitée dans la mesure du XHTML production est concernée. Malgré cette restriction, toutefois, vous trouverez mai XSLT permet de gérer et modifier votre contenu XHTML. XHTML est après le XML, et donc venu à la transformation avec XSLT, si vous trouvez approprié.

Peut-être ironiquement, les documents créés avec des feuilles de style en cascade dans l'esprit, qui font un grand usage de l'attribut de classe, sont presque aussi facile de travailler avec des documents en XSLT comme le sont les noms d'éléments XML avec sémantique. Parce que XSLT vous permet de spécifier des règles qui dépendent des valeurs des attributs et des noms ainsi que des éléments, vous pouvez "récolte" le contenu sémantique (le cas échéant) de vos documents existants XHTML. Dans le même temps, vous mai être en mesure de les convertir à d'autres formats XML - à partir de votre vocabulaire propre à plusieurs vocabulaires génériques tels que les Objets de formatage XSL, Scalable Vector Graphics (SVG), ou Synchronized Multimedia Integration Language (SMIL). Le plus d'information balisage vos documents contiennent et les plus régulièrement qu'il est appliqué, meilleures sont vos chances d'appliquer XSLT pour un tel travail. Même si vous n'avez pas l'intention de faire cela, et vous générer tous vos documents Web à partir de bases de données, vous mai être en mesure de mettre XSLT pour travailler comme une couche d'abstraction entre vos documents finaux et les sources de données qui les peuplent. Si vous travaillez avec des bases de données multiples, et surtout si elles sont largement distribués, vous mai trouver utile d'avoir les bases de données ou une sorte de middleware vous envoyer leurs informations comme des ensembles de documents XML. Ils peuvent accomplir ce soit en réponse à des questions, à l'avance, ou les deux en quelques sorte la mise en cache approche. Ensuite, vous pouvez utiliser XSLT pour tricoter ensemble les résultats dans un format final.

Bien que les développeurs HTML ont utilisé le Document Object Model (DOM) sur le client dans une certaine forme depuis environ 1997, lorsque les premières implémentations HTML dynamique apparue, son utilisation sur le serveur ouvre de nouveaux horizons dans la génération de documents. Dans le même temps, le DOM, il est très facile de créer conforme XHTML. Utilisation du DOM pour générer des documents de mai ne pas être appropriée dans chaque situation: Il adopte une approche très différente de la génération de textes ou de modèles, et exigent mai réoutillage ainsi que de repenser le modèle de programmation. Pour les cas où elle ne correspond, toutefois, les DOM promet de faire XHTML conformité beaucoup plus facile tout en rendant les structures de programme plus facile à concevoir de manière formelle.

Construire des arbres, pas les fluxFlux de texte nécessitent peu de ressources et vous pouvez les générer de façon relativement efficace. Inversement, les arbres ont besoin de ressources plus et ils coûtent parfois plus de puissance de traitement. Toutefois, ils ouvrent de nouvelles possibilités pour les développeurs qui ont besoin de pousser l'enveloppe. Modèles d'arbres offrent deux avantages principaux développeurs créant des applications XHTML. Premièrement, ils offrent un degré élevé de modularité pour isoler les développeurs contre les bogues causés par les sorties trompe textuelle. Deuxièmement, ils apportent un plus grand degré de flexibilité qui permet aux développeurs de créer une arborescence initiale, et ensuite le modifier si nécessaire - peut-être même pour la transformer dans une structure complètement différente ou en le réduisant à un petit fragment. Si vous avez besoin de ce type de fiabilité et de flexibilité, et peut accepter la mémoire supérieure et les demandes de traitement nécessaire par ces structures d'arbres, alors vous mai trouver utile pour générer des documents par l'intermédiaire du DOM.

  

NoteLa spécification DOM Level 1, qui comprend toutes les fonctionnalités que vous utilisez dans le présent article, est disponible à http://www.w3.org/TR/REC-DOM-Level-1. Si vous vous sentez curieux, DOM Level 2 est disponible à partir de http://www.w3.org/TR/DOM-Level-2. Information sur le développement d'autres DOM sont disponibles à l'http://www.w3.org/DOM/.

Les implémentations DOMLe Document Object Model, comme spécifié par le W3C, vient dans plusieurs Niveaux, Qui offrent tous les scripts et les programmes à des ensembles d'informations sur le document par le biais d'une API. L'API DOM est précisé de manière officielle via un fichier CORBA IDL (vous n'avez pas besoin de connaître quoi que ce soit à ce sujet d'utiliser le DOM), mais elle est plus couramment utilisé dans son Java et JavaScript traductions. Le DOM ne spécifie pas tout sur le traitement des documents et la manipulation - par exemple, le W3C adresses de chargement que des documents, la création de nouveaux documents, et sauvegarder des documents dans les travaux de niveau 3 c'est just getting started. En conséquence de cette approche, le monde du implémentations DOM est quelque peu fragmenté. Outre les différences entre le Java, JavaScript, CORBA et les versions du DOM, il est extrêmement difficile d'écrire du code DOM complet pour de multiples environnements. Alors que la génération mai document de base demeurent les mêmes, le début et la fin du processus de mai varier sensiblement lorsque vous vous déplacez DOM code de l'environnement à l'environnement et même à partir du serveur au navigateur, et retour.

Heureusement, les principes de base sont assez bien protégée. Si vous apprenez les bases de manipuler le DOM au sein d'une Active Server Pages (ASP) l'environnement, vous pouvez transférer une quantité importante de ces connaissances pour travailler avec Java parseurs XML de Sun, IBM, Apache, et d'autres, ou le traitement JavaScript intégré Mozilla / Netscape Navigator 6. Les concepts de base sont les mêmes dans tous ces systèmes, et les implémentations devrait (j'espère) convergent comme le W3C communiqués de normes plus complètes et les développeurs à créer sur ces normes. La section suivante se penche sur les principes de base dans un environnement, ASP, tout en soulignant comment le script entourant mai diffèrent dans d'autres environnements.

NoteLe DOM est disponible en différentes saveurs ainsi que les niveaux. Dans cet article, vous travaillez avec la base de la spécification DOM Level 1 à générer du code. Plus HTML fonctionnalités spécifiques sont disponibles dans la partie HTML du DOM Level 1. Toutefois, cette fonctionnalité a tendance à être plus approprié de client dynamique des applications côté HTML et n'est généralement pas pris en charge dans les outils utilisés pour générer le XML - même avec un vocabulaire HTML.

DOM ExemplesBien que les exemples suivants utilisent Active Server Pages comme environnement de développement, ils utilisent surtout ASP comme un environnement de programmation et d'ignorer sa capacité à créer des modèles. Alors que vous pouvez mélanger et assortir les DOM et le gabarit des approches, le matériau environnant dans le modèle mai compromettre la fiabilité du balisage créé dans le code. Cela est particulièrement vrai si ce modèle comprend d'autres contenus générés. Parce que le DOM Level 1 ne supporte pas les "DocumentType édition des« nœuds, vous devez toujours utiliser le modèle de partie pour la déclaration XML (le cas échéant) et la déclaration DOCTYPE (requis pour la conformité XHTML 1.0).

NoteMême si vous n'utilisez pas ASP ou n'aiment pas les ASP, les exemples suivants incluent beaucoup de vocabulaire de base DOM et l'usage qui est applicable au développement dans d'autres environnements. Vous créez votre DOM premier document basé sur le XHTML comme un classique «Bonjour monde ». Le code que vous créez construit un document XHTML qui ressemble à ceci:

 Bonjour tout le monde! 

Bonjour tout le monde!

Bonjour tout le monde!

En raison des limitations du DOM, vous devez créer un shell pour la déclaration XML et le DOCTYPE qui ressemble à ceci:

<% @ LANGUAGE = JavaScript%> 

Parce que la plupart des implémentations par défaut ASP pour VBScript, et que vous utilisez les liaisons JavaScript du DOM de la spécification, vous devez dire ASP que vous utilisez JavaScript. La déclaration XML doit suivre immédiatement, car elle est traitée comme une instruction de traitement (et probablement ignoré) si les espaces sont inclus. La partie suivante du code crée un objet Document que vous pouvez manipuler en utilisant la syntaxe de Microsoft. (Le DOM Level 1 ne prévoit pas un mécanisme standard pour ce processus.) <MyDoc% var = Server.CreateObject ( "Microsoft.XMLDOM"); Une fois que vous avez un document, vous devez créer un élément racine (dans ce cas , HTML). La méthode createElement () prend un nom d'élément pour son argument et retourne un élément d'objet Vous pouvez ensuite manipuler.

htmlNode var = myDoc.createElement ( "html");

L'élément HTML a besoin de quelques attributs de déclarer l'espace de noms et les langues que vous utilisez ici. Une fois que vous avez l'élément HTML, vous pouvez utiliser la méthode setAttribute pour créer le xmlns, xml: lang et attributs lang et définir leurs valeurs.

(htmlNode.setAttribute "xmlns", "http://www.w3.org/1999/xhtml"); htmlNode.setAttribute ( "xml: lang", "fr-FR"); htmlNode.setAttribute ( "lang", "fr-FR");

L'élément HTML existe maintenant, et elle a un effectif complet d'attributs, mais vous devrez sans doute de devenir l'élément racine du document.

myDoc.documentElement = htmlNode;

Maintenant que vous avez un élément HTML, il est temps de créer le reste du contenu du document. Pour ce faire, vous créez des éléments et des noeuds de texte, puis joignez les nœuds de texte et les nœuds de l'élément à leurs parents. Même s'il n'est pas très important qui séquence que vous créez les nœuds, cette séquence du code reflète généralement l'ordre du document de garder le débogage de devenir trop confus. Commençons par la tête et les éléments du titre:

headNode var = myDoc.createElement ( "head"); titleNode var = myDoc.createElement ( "title"); titleText var = myDoc.createTextNode ( "Bonjour le monde!"); titleNode.appendChild (titleText); headNode.appendChild (titleNode ); htmlNode.appendChild (headNode);
Vous construisez l'élément de tête en créant l'ensemble de ses nœuds séparément, puis de les ajouter à leurs éléments contenant approprié. Le createElement et méthodes createTextNode créer des éléments et le texte respectivement, tandis que la méthode appendChild établit les connexions entre ces nœuds.
bodyNode var = myDoc.createElement ( "body"); h1Node var = myDoc.createElement ( "H1"); h1Text var = myDoc.createTextNode ( "Bonjour le monde!"); paraNode var = myDoc.createElement ( "p"); paratexte var = myDoc.createTextNode ( "Bonjour le monde!"); h1Node.appendChild (h1Text); paraNode.appendChild (paratexte); bodyNode.appendChild (h1Node); bodyNode.appendChild (paraNode); htmlNode.appendChild (bodyNode);

Enfin, vous écrivez le document XML que vous avez modelé en utilisant la méthode de l'objet XML myDoc. La méthode XML produit du contenu XML sans espace supplémentaire. Si vous avez besoin d'espacement, vous pouvez créer des nœuds de texte qui en contiennent. Cette approche n'est pas limitée à la génération XHTML dont le contenu est connu à l'avance. Il travaille aussi facilement avec les matériaux provenant de bases de données, des formulaires ou d'autres possibilités. L'exemple suivant utilise un formulaire statique XHTML pour recueillir de l'information et la transmet à un XHTML-script générateur.

 Formulaires à XHTML 

Adresse Collector

Prénom:

Nom:

Adresse 1:

Adresse 2:

Ville: Etat / Province:

ZIP / Code Postal: Pays:

Le destinataire de ces informations sous forme utilise le DOM pour insérer le matériau dans un document XHTML. La plupart des techniques utilisées ressemblent à celles de l'exemple précédent, mais les explications de quelques différences suivre le code:
En créant le titre pour le document, vous combinez plusieurs champs du formulaire en une seule chaîne de texte qui devient un nœud texte unique:
var = titleText myDoc.createTextNode ( "Adresse de" + Request.Form.Item ( "FirstName") + "" + Request.Form.Item ( "LastName"));
Cela fonctionne bien parce que l'élément title contient que du texte. Si ce texte ont été mélangés et les éléments, il faudrait une approche plus complexe (qui je le démontre la prochaine fois que vous utilisez les informations du nom):
nameNode var = myDoc.createElement ( "p"); nameNode.setAttribute ( "class", "name"); firstNameNode var = myDoc.createElement ( "span"); firstNameNode.setAttribute ( "class", "FirstName"); firstNameText var = myDoc.createTextNode (Request.Form.Item ( "FirstName")); firstNameNode.appendChild (firstNameText); lastNameNode var = myDoc.createElement ( "span"); lastNameNode.setAttribute ( "class", "lastName") ; lastNameText var = myDoc.createTextNode (Request.Form.Item ( "LastName")); lastNameNode.appendChild (lastNameText); nameNode.appendChild (firstNameNode); nameNode.appendChild (nameSeparatorNode); nameNode.appendChild (lastNameNode); bodyNode. appendChild (nameNode);
Ce morceau de code est remarquable pour plusieurs raisons. D'abord, parce que le nom apparaît sur une seule ligne, le nom entier est contenu dans un élément p unique. Pendant ce temps, le prénom et le nom de famille sont contenues dans les éléments de réglage de sensibilité. Le nom peut être construit comme il est dans le titre - juste le texte -, mais utilisant des éléments de réglage de sensibilité et les attributs de classe conserve plus d'informations sur le contenu et permet aux parties de style différent du nom ou d'adresse comme un groupe par le client dynamique de côté HTML. Il faut également noter la création du nœud séparateur de nom - même si c'est juste un espace, il doit être créé et ajouté explicitement. Plus tard dans le code, un séparateur différent apparaît:
citySeparatorNode = myDoc.createTextNode ( ","); addressNode.appendChild (citySeparatorNode);
Les entreprises qui veulent s'il vous plaît le bureau de poste, plutôt que d'utiliser une forme populaire, peut changer le commaspace à seulement un espace. Entre le code postal et l'Etat, cependant, vous pouvez faire quelque chose de différent:
postalSpaceNode = nameSpaceNode.cloneNode (false); addressNode.appendChild (postalSpaceNode);
Supposons que vous voulez que l'espace entre l'État et code postal doit être le même que l'espace entre les noms et prénoms, mais le même nœud ne peut pas avoir plusieurs parents. Pour éviter cette complication, utilisez la cloneNode () la méthode, cette méthode retourne une nouvelle copie du contenu du nœud. En lui passant l'argument est faux, il renvoie seulement une simple copie du noeud sans dragage possible à travers les couches de la teneur en élément. Vous voulez seulement un espace - il s'agit d'un noeud très simple - si l'argument n'a pas d'importance beaucoup. Oui, cela peut paraître excessivement complexe. D'autre part, elle contribue également à ce que vos documents XML doivent être propres, à chaque fois. Le XHTML produite par le générateur est une fois de plus n'ont pas d'espace pour la plupart, mais les espaces ne figure où vous ajouter explicitement:
 Adresse de Jimbo Jones 

Jimbo Jones

134 Rocket Science Way

Apt. 27B

Out There, NW 00001

Etats-Unis

Jusqu'ici, cela ressemble à une énorme quantité de travail pour produire un résultat relativement mineures. Les prestations commencent à apparaître lorsque vous avez besoin de faire des choses plus sophistiquées, avec la structure de votre document, comme ajouter des sections entières du document ou de transformer un type de document dans un autre. Dans l'exemple suivant, vous ajoutez vos coordonnées à un document existant XHTML, en utilisant des documents XHTML dans le DOM comme un nouveau type de modèle, un document facilement modifiable. Le modèle que vous utilisez ressemble à ceci:
 Votre Prix 

Dear Fool,

Vous avez gagné un million, mille milliards de dollars !!!!! En argent laminé jeu, ce qui est. S'il vous plaît nous contacter pour encaisser votre gain au +1 888 555 1212. Frais d'expédition et de manutention pouvant aller jusqu'à dix mille dollars, mai-être à percevoir votre prix.

Hahahaha!

le Comité du prix (nous Prys votre argent loin de vous!)

Bien qu'il mai mai ou ne pas être à une lettre légale d'envoyer quelqu'un (même si c'est une parodie évidente), XHTML, il est presque conforme. Ensuite, vous modifiez le code DOM vous avez utilisé pour charger ce document, ajoutez l'adresse à l'élément div vide, et le mettre comme une lettre.

AttentionBien qu'il soit préférable d'inclure la déclaration DOCTYPE dans le modèle, le moteur de l'ASP et le parseur XML semble s'étouffer avec des documents XHTML qui contiennent des déclarations DOCTYPE chargé en tant que XML. Nous aurons à faire figurer cette information dans le script une fois de plus. La plupart du code est le même que le code DOM utilisé pour générer l'adresse précédente. La principale différence se situe au début du code lorsque vous chargez le modèle de document et l'utiliser comme une base.

 

La principale activité dans ce script, qui diffère de l'exemple précédent est dans le code au début qui charge le template:

sourceFile = Server.MapPath ( "prizexhtm2.xml"); myDoc var = Server.CreateObject ( "Microsoft.XMLDOM"); myDoc.async = false; myDoc.load (sourceFile); changeNode var = myDoc.getElementsByTagName ( "div" ). item (0);

La technique de chargement des fichiers est une extension Microsoft, une fois encore non précisée par les spécifications DOM du W3C. Fondamentalement, ce code crée un chemin complet vers un fichier dans le même dossier que le script, qui est utilisé comme modèle. L'analyseur XML analyse ensuite ce fichier - mise à false myDoc.async garantit que la totalité du document est chargé avant le traitement continue. Ensuite vous prenez l'élément div vide afin que vous puissiez mettre les informations que vous recevez de la forme en cet élément. Le code source derrière cette génération est aussi intéressant. Il montre certaines incohérences dans la façon dont l'analyseur Microsoft XML gère les espaces à partir de documents qu'elle charges plutôt que les espaces à partir des documents créés dans le code.

 Votre Prix 

Jimbo Jones

134 Rocket Science Way

Apt. 27B

Out There, NW 00001

Etats-Unis

Dear Fool,

Vous avez gagné un million, mille milliards de dollars !!!!! En argent laminé jeu, ce qui est. S'il vous plaît nous contacter pour encaisser votre gain au +1 888 555 1212. Expédition et de manutention pouvant aller jusqu'à dix mille dollars, mai-être à percevoir votre prix.

Hahahaha!

le Comité du prix (nous Prys votre argent loin de vous!)

Même si ces exemples sont assez simples, vous pouvez appliquer les mêmes mécanismes pour des tâches telles que la construction de tables autour de l'information de base de données ou des structures de documents XML, réorganiser le contenu du document, ou la suppression de morceaux à partir d'un document.

Making logique et la structure mobileLe Document Object Model et le code qu'il tend à produire sont à la fois assez difficile, mais les résultats peuvent trim projets lourde à leurs dimensions. Le Document Object Model se cache à la frontière entre le HTML et le XML, développé avec un oeil vers le premier, mais tout à fait utile pour des tâches impliquant ce dernier. Sur le navigateur, vous mai voulons profiter de ses caractéristiques pour aborder le vocabulaire HTML et diverses compréhensions construit autour de ce vocabulaire. Sur le serveur, vous pouvez l'utiliser pour créer des documents XML à partir d'un point de vue. XHTML nécessite une compréhension de ces deux perspectives, pour les DOM est un ajustement naturel.

Peut-être la chose la plus importante concernant les DOM est qu'il vous permet de partitionner les applications entre les différents systèmes mais vous jugera approprié. À cet égard, il ressemble beaucoup Extensible Stylesheet Transformations (XSLT) décrit dans le dernier article - mais dans une certaine mesure, il est encore plus puissant. Parce que les structures d'arbre créés en analysant des documents dans un DOM reste manipulable, et ne sont pas simplement la sortie d'une transformation, le DOM offre une flexibilité qui va bien au-delà de la simple génération de documents vient de montrer (mais pas bien mises en œuvre entre les différents navigateurs pour le moment). Vous pourraient se déplacer (le cas échéant) les scripts de création de documents et de combiner des documents aux navigateurs clients, ce qui ferait alors courir le même code sur le navigateur et de générer le même document. Le Microsoft des fonctionnalités spécifiques utilisés pour créer et afficher le document aurait besoin de mise à jour (puisque même Internet Explorer utilise une syntaxe légèrement différente pour ces derniers), mais la logique de base est facilement transférables. (Il faut espérer que le développement des DOM Level 3 va compléter ce tableau et rendre la logique entièrement transférables.

Cette combinaison de caractéristiques, dont certaines sont des promesses certes, mai signifie que le XHTML et le DOM allez enfin réaliser les promesses anciennes de Dynamic HTML viable. La construction d'applications qui s'exécutent à l'intérieur de (et en dehors de) navigateurs utilisant les données transmises sur le Web pour des choses plus sophistiqués que les pop-up contours et le drag-and-games baisse sera beaucoup plus facile, même dans des situations qui nécessitent un soutien pour le navigateur de multiples environnements.

un article présenté par Albert Lichtblau


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article «Intégrer les DOM avec XHTML Generation" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 152 users browsing the articles directory   


  

|