Die Integration der DOM mit XHTML Generation

XSLT Anwendbarkeit auf traditionelle Web-Anwendungen zeichnet sich durch seine Forderung nach einer XML-Quelldokument begrenzt. Wenn Ihre Organisation nicht bereits XML eingesetzt, kann dies nur von begrenztem Nutzen so weit wie XHTML Produktion betroffen ist. Trotz dieser Einschränkung kann jedoch finden Sie XSLT nützlich für die Verwaltung und Änderung Ihrer XHTML-Inhalte. XHTML ist nach XML und damit reif für die Verarbeitung mit XSLT, wenn Sie es für angemessen erachten.

Vielleicht etwas ironisch, Dokumente mit Cascading Style Sheets im Sinn, die sehr häufig in den class-Attribut zu machen erstellt wurden, sind fast so einfach in die Arbeit mit XSLT als XML-Dokumente sind mit semantischen Element Namen. Da XSLT ermöglicht es Ihnen, Regeln, die von Attributwerten und Namen abhängig sind, sowie Elemente, können Sie "ernten" den semantischen Gehalt anzugeben (falls vorhanden) Ihres bestehenden XHTML-Dokumente. Zur gleichen Zeit können Sie in der Lage, sie zu bekehren auf andere XML-Formate - von Ihrer eigenen Wortschatz zu allgemeiner Vokabeln wie XSL-Formatting Objects, Scalable Vector Graphics (SVG), oder Synchronized Multimedia Integration Language (SMIL). Je mehr Informationen Markup Ihre Dokumente enthalten, und je mehr sie regelmäßig angewendet wird, desto besser sind Ihre Chancen der Anwendung von XSLT, eine solche Arbeit. Auch wenn Sie habe auch keine Pläne, dies zu tun, und erzeugen Sie Ihren Web-Dokumenten aus Datenbanken, Sie kann in der Lage sein, über XSLT als eine Abstraktionsebene zwischen der endgültigen Dokumente und Datenquellen, die sie bevölkern Arbeit. Wenn Sie mit mehreren Datenbanken zu arbeiten, und vor allem, wenn sie weit verbreitet, finden Sie es vielleicht sinnvoll, die Datenbanken oder eine Art Middleware senden Sie ihre Informationen als Mengen von XML-Dokumenten haben. Sie können dies entweder in der Antwort auf Anfragen, im Voraus oder auch in einigen der Art Caching-Ansatz. Dann können XSLT, um die Ergebnisse zusammen in eine endgültige Form stricken.

Obwohl HTML-Entwickler haben das Document Object Model (DOM) auf dem Client in irgendeiner Form verwendet seit etwa 1997, als die ersten dynamischen HTML-Implementierungen erschien, öffnet seine Verwendung auf dem Server neue Perspektiven in der Generierung von Dokumenten. Zur gleichen Zeit macht der DOM es sehr einfach zu erstellen konformes XHTML. Mit dem DOM-Dokumente erzeugen kann nicht in jeder Situation angemessen: Es dauert einen ganz anderen Ansatz als Text zu erzeugen oder Vorlagen, und können die Umrüstung sowie ein Überdenken der Programmiermodell. Für Fälle, in denen es passt, aber verspricht die DOM zu machen, XHTML-Konformität viel einfacher, während Making-Programm Strukturen leichter förmlich Design.

Building Bäume, die StreamsStreams von Text erfordern wenig Ressourcen und man kann sie relativ effizient zu erzeugen. Umgekehrt erfordern Bäume mehr Ressourcen und sie manchmal mehr kosten Rechenleistung. Doch sie neue Möglichkeiten für Entwickler, die den Umschlag vorangetrieben werden müssen. Tree-Modelle bieten zwei wesentliche Vorteile für Entwickler Gebäude XHTML-Anwendungen. Erstens bieten sie einen hohen Grad an Modularität, um Entwickler aus den Fehlern durch falsche Textausgaben verursacht isolieren. Zweitens bieten sie ein wesentlich höheres Maß an Flexibilität, mit der Entwickler eine erste Baum erstellen können und dann ändern Sie es wie nötig - vielleicht sogar Umwandlung in eine ganz andere Struktur oder zu reduzieren, um ein kleines Fragment. Wenn Sie diese Art von Zuverlässigkeit und Flexibilität brauchen, und können die größere Speicher-und Verarbeitung von diesen Forderungen Baum erforderlichen Strukturen zu akzeptieren, dann können Sie finden es sinnvoll, Dokumente über das DOM zu generieren.

  

HinweisDie DOM Level 1-Spezifikation, die alle Funktionen, die Sie in diesem Artikel enthält, finden Sie unter http://www.w3.org/TR/REC-DOM-Level-1. If you're feeling neugierig, DOM Level 2 ist von http://www.w3.org/TR/DOM-Level-2 zur Verfügung. Informationen zu weiteren DOM Entwicklung ist abrufbar unter http://www.w3.org/DOM/.

DOM-ImplementierungenDas Document Object Model, wie durch das W3C, kommt in mehreren LevelsBieten die alle Skripte und Programme, um Gruppen von Dokument mit Informationen über eine API. Die DOM-API ist offiziell durch eine CORBA IDL-Datei angegeben (Sie brauchen nichts über die Verwendung des DOM), ist aber häufiger in der Java-und JavaScript-Übersetzungen verwendet wissen. Das DOM ist nicht festgelegt, alles über die Verarbeitung und Handhabung Dokument - zum Beispiel den W3C-Adressen nur Einlegen von Dokumenten, Erstellen neuer Dokumente und Speichern von Dokumenten in den Arbeiten der Stufe 3 das ist erst der Anfang. Als Ergebnis dieses Ansatzes, der die Welt der DOM-Implementierungen ist etwas uneinheitlich. Abgesehen von den Unterschieden zwischen den Java, JavaScript, und CORBA-Versionen der DOM, ist es äußerst schwierig, komplette DOM-Code für mehrere Umgebungen zu schreiben. Während die Kern-Generierung von Dokumenten kann die gleiche, der Anfang und Ende des Prozesses kann variieren erheblich bleiben, wie Sie DOM-Code aus der Umgebung zu bewegen, um Umwelt und auch vom Server zum Browser und wieder zurück.

Glücklicherweise sind die grundlegenden Prinzipien ziemlich sicher. Wenn Sie lernen die Grundlagen der Manipulation des DOM innerhalb einer Active Server Pages (ASP)-Umgebung, können Sie eine erhebliche Menge dieser Kenntnisse zur Arbeit mit Java XML-Parser von Sun, IBM, Apache, und andere, oder die JavaScript-Verarbeitung eingebaut Transfer Mozilla / Netscape Navigator 6. Die grundlegenden Konzepte sind die gleichen für alle dieser Systeme und die Implementierung sollte (hoffentlich) konvergieren die W3C-Standards und vollständigere Entwickler Versionen bauen auf diesen Normen entspricht. Der nächste Abschnitt wirft einen Blick auf die grundlegenden Prinzipien in einer Umgebung, ASP, weist aber darauf hin, wie die Umgebung Skript in anderen Umgebungen unterscheiden können.

HinweisDie DOM gibt es in verschiedenen Geschmacksrichtungen sowie Levels. In diesem Artikel, arbeiten Sie mit dem Kern des DOM Level 1, um Code zu generieren. Weitere HTML-spezifische Funktionalität ist in der HTML-Teil der DOM Level 1 zur Verfügung. Allerdings neigt, die Funktionalität für sinnvoller sein, Client-seitige dynamische HTML-Anwendungen und in der Regel nicht in den Werkzeugen, die XML generieren unterstützt - auch mit einem HTML-Vokabular.

DOM BeispieleWährend der folgenden Beispiele Active Server Pages verwenden, wie ihre Entwicklung Umwelt, sie meist mit Hilfe von ASP als eine Programmierumgebung und ignorieren ihre Fähigkeit zum Erstellen von Vorlagen. Sie können zwar Mix and Match der DOM-und Template-Konzepte, das umgebende Material in der Vorlage kann die Zuverlässigkeit der durch die Markup-Code erstellt Kompromiss. Dies gilt insbesondere, wenn dieser Vorlage andere Inhalte enthält. Da die DOM Level 1 nicht "bearbeiten DocumentType" Knoten zu unterstützen, haben Sie immer noch die Verwendung der Vorlage Anteil für die XML-Deklaration (falls zutreffend) und DOCTYPE-Deklaration (für XHTML 1.0 Konformität erforderlich).

HinweisAuch wenn Sie nicht verwenden, ASP oder nicht wie ASP, gehören die folgenden Beispiele einer Menge an grundlegenden DOM Wortschatz und Nutzung zu entwickeln, die anwendbar ist, in anderen Umgebungen. Sie erstellen Ihre erste DOM-basiertes XHTML-Dokument als ein klassisches "Hallo Welt ". Der Code, den Sie erzeugen, baut ein XHTML-Dokument, das wie folgt aussieht:

 Hallo Welt! 

Hallo Welt!

Hallo Welt!

Aufgrund von Einschränkungen der DOM ist, müssen Sie eine Hülle für die XML-Deklaration und der DOCTYPE so aussieht erstellen:

<% @ Language = JavaScript%> 

Da die meisten ASP-Standard-Implementierungen zu VBScript, und schon sind Sie mit der JavaScript-DOM-Bindungen der von der Spezifikation, müssen Sie die ASP sagen, dass Sie bei Verwendung von JavaScript. Die XML-Deklaration hat unverzüglich zu folgen, weil es als eine Verarbeitungsanweisung behandelt wird (und wahrscheinlich ignoriert), wenn Leerzeichen enthalten ist. Der nächste Teil des Code erstellt ein Document-Objekt können Sie manipulieren mit Syntax von Microsoft. (Die DOM Level 1 bietet keine Standard-Mechanismus für diesen Prozess.) <% Var myDoc = Server.CreateObject ( "Microsoft.XMLDOM"); Nachdem Sie ein Dokument, müssen Sie ein Root-Element zu erstellen (in diesem Fall , html). Die createElement ()-Methode nimmt dann ein Element Namen für ihr Argument und gibt ein Element Objekt, das Sie dann bearbeiten können.

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

Das HTML-Element benötigt einige Attribute, um die Namespace zu erklären und die Sprachen, die Sie hier verwenden. Wenn Sie das HTML-Element haben, können Sie die Methode setAttribute verwenden, um die xmlns, xml: lang zu schaffen und lang-Attribute und stellen Sie ihre Werte.

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

Das HTML-Element gibt es jetzt, und es hat auch eine vollständige Anzeige von Attributen, aber wahrscheinlich sollte es als Root-Element für das Dokument.

myDoc.documentElement = htmlNode;

Nun, da Sie ein HTML-Element haben, ist es Zeit, schaffen die übrigen Teile des Dokumentes Inhalt. Um das zu tun, Sie Elemente und Text-Knoten erstellen und dann fügen Sie den Text-Knoten und Element-Knoten zu den Eltern. Es ist zwar nicht sehr wichtig, die Reihenfolge erstellen Sie die Knoten in, die Reihenfolge der Code in der Regel den Beschluss des Dokuments , um das Debuggen immer davor, zu verwirrend. Beginnen wir mit dem Kopf und title-Elemente:

var HeadNode = myDoc.createElement ( "head"); var titleNode = myDoc.createElement ( "title"); var titleText = myDoc.createTextNode ( "Hallo Welt!"); titleNode.appendChild (titleText); headNode.appendChild (titleNode ); htmlNode.appendChild (HeadNode);
Sie bauen das head-Element, indem sie alle ihre Knoten getrennt und dann die Aufnahme in die entsprechenden Container-Elemente. Die createElement createTextNode und Methoden zu erstellen und Text bzw. Elemente, während die Methode appendChild die Verbindungen zwischen diesen Knoten wird.
var bodyNode = myDoc.createElement ( "body"); var h1Node = myDoc.createElement ( "h1"); var h1Text = myDoc.createTextNode ( "Hallo Welt!"); var paraNode = myDoc.createElement ( "p"); var Paratext = myDoc.createTextNode ( "Hallo Welt!"); h1Node.appendChild (h1Text); paraNode.appendChild (Paratext); bodyNode.appendChild (h1Node); bodyNode.appendChild (paraNode); htmlNode.appendChild (bodyNode);

Schließlich schreiben Sie den XML-Dokument haben Sie modelliert mit der XML-Methode des myDoc Objekt. Die XML-Methode erzeugt XML-Inhalte ohne zusätzliche Leerzeichen. Wenn Sie Leerzeichen benötigen, können Sie Text-Knoten enthalten, zu schaffen. Dieser Ansatz ist kaum zu Erzeugung von XHTML, deren Inhalt im Voraus bekannt begrenzt. Es funktioniert auch problemlos mit Material aus Datenbanken, Formulare oder andere Möglichkeiten. Im nächsten Beispiel wird eine statische XHTML-Formular aus, um Informationen zu sammeln und übergibt sie an ein XHTML-Skript erzeugt.

 Formulare in XHTML 

Adresse Collector

Vorname:

Nachname:

Adresse 1:

Adresse 2:

Ort: State / Province:

PLZ: Land:

Der Empfänger der Informationen verwendet diese Form der DOM um das Material in einem XHTML-Dokument einfügen. Die meisten der verwendeten Techniken aussehen wie die im vorherigen Beispiel, aber Erklärungen von ein paar Unterschiede folgen Sie den Code:
Bei der Erstellung der Titel für das Dokument, kombinieren Sie mehrere Felder aus der Form in einem einzigen Text-String, dass ein einziger Text Knoten wird:
var titleText = myDoc.createTextNode ( "Adresse" + Request.Form.item ( "Vorname") + "" + Request.Form.item ( "Nachname"));
Das funktioniert, weil das Element title nur Text enthält. Wenn es waren gemischte Text und Elemente, wäre es ein komplizierter Ansatz erfordern (die zeige ich das nächste Mal den Namen Informationen):
var nameNode = myDoc.createElement ( "p"); nameNode.setAttribute ( "class", "name"); var firstNameNode = myDoc.createElement ( "span"); firstNameNode.setAttribute ( "class", "firstName"); var firstNameText = myDoc.createTextNode (Request.Form.item ( "vorname")); firstNameNode.appendChild (firstNameText); var lastNameNode = myDoc.createElement ( "span"); lastNameNode.setAttribute ( "class", "LastName") var lastNameText = myDoc.createTextNode (Request.Form.item ( "Nachname")); lastNameNode.appendChild (lastNameText); nameNode.appendChild (firstNameNode); nameNode.appendChild (nameSeparatorNode); nameNode.appendChild (lastNameNode); bodyNode. appendChild (nameNode);
Dieses Stück Code ist für eine Reihe von Gründen bemerkenswert. Erstens, weil der Name auf einer einzigen Zeile, wird die ganzen Namen in einem p-Element enthalten. Inzwischen sind die Vor-und Nachnamen in span-Elemente enthalten. Der Name kann, wie es gebaut wird im Titel - nur Text - aber mit span-Elemente und Attribute der Klasse erhält zusätzliche Informationen über den Inhalt und macht es möglich, zum ursprünglichen Stil Teile des Namens oder der Anschrift anders als Gruppe durch die Client-seitige Dynamik HTML. Ebenfalls bemerkenswert ist die Schaffung des Namens Separator-Knoten - auch wenn es nur ein Leerzeichen, muss sie erstellt werden und ausdrücklich angehängt. Später in den Code, ein anderes Trennzeichen angezeigt:
citySeparatorNode = myDoc.createTextNode ( ""); addressNode.appendChild (citySeparatorNode);
Unternehmen, die die Post Freude bereiten wollen, anstatt sich auf eine beliebte Form, kann der commaspace ändern, nur ein Leerzeichen. Zwischen dem Staat und Postleitzahl, können Sie jedoch etwas anderes:
postalSpaceNode = nameSpaceNode.cloneNode (false); addressNode.appendChild (postalSpaceNode);
Angenommen, Sie möchten den Raum zwischen dem Staat und Postleitzahl ein, um die gleiche sein wie der Abstand zwischen der ersten und letzten Namen, aber dem gleichen Knoten können nicht mehrere Eltern. Um diese Komplikation zu vermeiden, verwenden Sie die cloneNode ()-Methode; dieser Methode gibt eine neue Kopie der Inhalte des Knotens. Indem es das Argument falsch, es gibt nur eine einfache Kopie des Knotens ohne Baggerarbeiten durch verschiedene Ebenen der Inhalt des Elements. Sie wollen nur ein Raum - das ist eine sehr einfache Knoten - so das Argument nicht viel aus. Ja, könnte dies zu kompliziert zu sein scheinen. Auf der anderen Seite, es hilft auch sicherzustellen, dass Ihre Dokumente werden sauber XML, jede einzelne Zeit. Der XHTML erzeugt durch den Generator wieder ohne Leerzeichen zum größten Teil, Leerzeichen, obwohl nicht angezeigt, wenn man ihn explizit hinzuzufügen:
 Adresse von Jimbo Jones 

Jimbo Jones

134 Rocket Science Way

Apt. 27B

Out There, NW 00001

USA

Bisher scheint dies eine enorme Menge an Arbeit zu einer relativ geringen Ergebnis zu erzielen. Die Leistungen beginnen zu erscheinen, wenn Sie um kompliziertere Dinge mit der Struktur eines Dokuments, wie ganze Abschnitte hinzuzufügen, um das Dokument zu verwandeln oder eine Art von Dokument in ein anderes tun müssen. Im nächsten Beispiel fügen Sie Ihre Adresse Daten an eine vorhandene XHTML-Dokument, mit XHTML-Dokumente innerhalb des DOM als eine neue Art der Vorlage, ein leicht modifizierbar zu dokumentieren. Die Vorlage, die Sie verwenden wie folgt aussieht:
 Ihr Preis 

Lieber Narr,

Sie haben eine Million gewonnen hat, Billionen Dollar !!!!! Im Verbund-Spiel-Leistungs-Verhältnis, heißt es. Bitte kontaktieren Sie uns Ihren Preis beim +1 888 555 1212 zu sammeln. Liefer-und Bearbeitungsgebühren von bis zu zehntausend US-Dollar erforderlich sein sammeln, um Ihren Preis.

Hahahaha!

den Preis Ausschuss (wir prys Ihr Geld von Ihnen entfernt!)

Zwar mag es sein oder auch nicht eine juristische Brief an jemanden schicken (obwohl es eine offensichtliche Parodie), ist es fast konformes XHTML. Weiter, ändern Sie die DOM-Code von Ihnen verwendete, um dieses Dokument zu laden, fügen Sie die Adress-Informationen auf das leere div-Element, und legte es als einen Brief.

AchtungEs wird zwar empfohlen, um auch die DOCTYPE-Deklaration in der Vorlage, die ASP-Engine und der XML-Parser scheinen auf XHTML-Dokumente, die DOCTYPE-Deklarationen als XML geladen enthalten ersticken. Wir müssen diese Informationen in das Skript erneut unter Beweis gestellt. Die meisten der Code ist der gleiche wie der DOM-Code verwendet, um die vor-Adresse zu generieren. Der wesentliche Unterschied liegt am Anfang des Codes, wo du die Vorlage Dokument und verwenden sie als Basis.

 

Die wichtigsten Aktivitäten in diesem Skript, das von der vorherigen Beispiel unterscheidet sich in den Code am Anfang, lädt die Vorlage:

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

Die Technik zum Laden von Dateien ist eine Microsoft-Erweiterung noch einmal spezifiziert durch das W3C-DOM-Angaben. Grundsätzlich erzeugt dieser Code eine vollständige Pfad zu einer Datei im gleichen Ordner wie das Skript, das als Vorlage verwendet wird. Der XML-Parser analysiert dann die Datei - Einstellung myDoc.async auf "false" sorgt dafür, dass das gesamte Dokument geladen ist, bevor die Verarbeitung fortgesetzt. Dann packen Sie das leere div-Element, so dass Sie die Informationen erhalten Sie von der Form in diesem Element stellen kann. Der Quellcode hinter dieser Generation ist auch interessant. Es zeigt einige Ungereimtheiten, wie die Microsoft XML-Parser verarbeitet Leerzeichen aus Dokumenten, lädt es im Gegensatz zu aus Dokumenten, die durch den Code erstellt Leerzeichen.

 Ihr Preis 

Jimbo Jones

134 Rocket Science Way

Apt. 27B

Out There, NW 00001

USA

Lieber Narr,

Sie haben eine Million gewonnen hat, Billionen Dollar !!!!! Im Verbund-Spiel-Leistungs-Verhältnis, heißt es. Bitte kontaktieren Sie uns Ihren Preis beim +1 888 555 1212 zu sammeln. Versandkosten und Gebühren Handling von bis zu zehntausend US-Dollar erforderlich sein, um Ihren Gewinn zu kassieren.

Hahahaha!

den Preis Ausschuss (wir prys Ihr Geld von Ihnen entfernt!)

Während diese Beispiele relativ einfach sind, können Sie die gleichen Mechanismen anwenden, um Aufgaben wie dem Bau von Tischen rund um Informationen aus Datenbanken oder XML-Dokument-Strukturen, die Neuordnung Inhalt des Dokuments oder Löschen von Teilen aus einem Dokument.

Making Logik und Struktur MobileDas Document Object Model und der Code es dazu neigt, zu produzieren sind beide etwas sperrig, aber die Ergebnisse können unhandlich Projekte Trimm auf die passende Größe. Das Document Object Model lauert an der Grenze zwischen HTML und XML, mit einem Auge in Richtung entwickelt, die ehemalige, aber sehr nützlich für die Aufgaben im Zusammenhang mit der letzteren. Auf der Browser kann, möchten Sie die Vorteile der Funktionen für die Bewältigung der HTML-Vokabular und die verschiedenen Auffassungen etwa denen Sie Ihren Wortschatz aufgebaut werden. Auf dem Server können Sie es verwenden, um Dokumente aus einer XML-Perspektive zu schaffen. XHTML erfordert ein Verständnis dieser beiden Perspektiven, so dass der DOM ist eine logische Folge.

Vielleicht das Wichtigste über das DOM ist, dass es hier können Sie Ihre Anwendungen unter verschiedenen Systemen Partition jedoch finden Sie die richtigen. In diesem Zusammenhang ist es ähnlich wie Extensible Stylesheet Transformations (XSLT) beschrieben im letzten Artikel - aber zu einem gewissen Grad ist es noch mächtig. Weil die Baum-Strukturen durch das Analysieren von Dokumenten in ein DOM manipulierbar geschaffen wurde, bleiben und nicht einfach die Ausgabe einer Transformation, bietet das DOM Flexibilität, der weit über die einfache Generierung von Dokumenten gerade gezeigt (wenn auch nicht in allen Browsern gut umgesetzt noch). Sie bewegen konnte (falls zutreffend) die Skripte für die Erstellung von Unterlagen und Dokumente, auf die Kombination von Client-Browser, die dann den gleichen Code im Browser laufen und erzeugen das gleiche Dokument. Die Microsoft-spezifischen Funktionen zum Erstellen und der Ausgabe des Dokuments müssen aktualisiert werden würde (wie auch der Internet Explorer verwendet etwas andere Syntax für diese), aber der Core-Logik ist leicht übertragen werden. (Ich hoffe, die Entwicklung von DOM Level 3 wird dieses Bild zu vervollständigen und machen die Logik voll übertragbar sein.

Diese Kombination von Eigenschaften, von denen einige zwar verspricht, kann bedeuten, dass XHTML und DOM schließlich wird das alte Versprechen von dynamischem HTML rentabel zu machen. Erstellen von Anwendungen, die innerhalb der run (und außerhalb) verwendeten Browsern, die Daten über das Web für kompliziertere Dinge als Pop-up übertragen Umrisse und Drag-and-Drop-Spiele werden viel einfacher, auch in Situationen, die Unterstützung für mehrere Browser erforderlich Umgebungen.

Ein Artikel eingereicht von Albert Lichtblau


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Die Integration der DOM mit XHTML-Generation" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 194 users browsing the articles directory   


  

|