Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in den Beispielcode zur Konvertierung von XML-Daten in HTML

Detaillierte Einführung in den Beispielcode zur Konvertierung von XML-Daten in HTML

黄舟
黄舟Original
2017-03-11 17:35:312046Durchsuche

Verwenden Sie ein einfaches XSL-Stylesheet, um XML-Daten in HTML zu konvertieren. Da sich die XML-Spezifikation weiterentwickelt, scheint es notwendig zu sein, in der neuen Version alle Anforderungen zu erfüllen. Nehmen wir an, Sie verfügen über XML-Daten, die den Inhalt einer Seite darstellen, und möchten nun deren Inhalt in ein Layout konvertieren. Hier ist das XML, das Sie konvertieren möchten:

85fa80ee361e700c2be4d997bc9733c9 
31fe81e98afd17e4b9a8a28bedee1cf1 
b2a0af5a8fd26276da50279a1c63a57a 
254d0476a3bbaede07403c5f35da3e25 
59ef88518edd60e9f6a2c9f2c966ac0c 
28f128881ce1cdc57a572953e91f7d0fFolder1273e21371c5d5e701d3c98517a0bfa41 
c6a235960c38d509b87ca752283a5cb2 
28897b20adb25fbae118a3f80f538dec 
28f128881ce1cdc57a572953e91f7d0fFile1273e21371c5d5e701d3c98517a0bfa41 
5d31de15119673d8345a6e7e4e3539c8 
d737d0a06790df603d79bb2c76c86712 
1d029f6197b5a3eb8a3fdf0a088ddf55 
7674b22ef33c73b930516fd6bc30b7a3string47da3aec5fea7de36e415e6398f16561 
d82af2074b26fcfe177e947839b5d381500a47fdba4028b9e1b40fb76257dcf69f 
8487820b627113dd990f63dd2ef215f3somedata4b175f9a50d57c75316becd702e959dc 
07b4fdd0136efc154b4b9d48cfcbbb9d 
6d2ce49320ba9a8e638019ef6c9bc2ef 
7e3a30f0b0961b04563491c9888611a7 
a83812d91bc3e67c6d4248fcc5008811 
917d3984ce33e8bdef33749ba625760b 
506346dddbef7ce31b7ff0aa13ddacdf 
c1a7601f3a9fa679b3cd6fdf4f6dbe8d 
21118965b89073f60271ef4a3b5d3c58

Dieser Inhalt stellt eine Reihe von Ordnern, Dateien und Feldern dar. Jeder Ordner enthält Dateien und jede Datei enthält Felder für Eingabedaten. Jeder Ordner in der Ordnergruppe wird durch ein TR-Element und ein TD-Element in der ersten Zeile einer TABLE dargestellt. Jede Datei in der Dateigruppe wird als TR-Element und TD-Element in der ersten Zeile eines TABLE-Elements dargestellt, das im Ordner-TR-Element verschachtelt ist. Jede Domäne in der Domänengruppe wird als INPUT in der zugehörigen Datei angezeigt.
Das Folgende ist das für diese Transformation verwendete XSL:

<?xmlversion="1.0"?> 
<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"version="1.0" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:fn=http://www.aaa.com/aaa> 
<xsl:outputmethod="html"/> 
<msxsl:scriptlanguage="JScript"implements-prefix="fn"> 
functiongetElementCount(nodelist,what){ 
varrtrn=0; 
rtrn=nodelist[0].parentNode.selectNodes(what).length; 
return(rtrn 1);//1isaddedforfillerTD 
} 
</msxsl:script> 
<xsl:templatematch="/"> 
<TABLECELLSPACING="0"CELLPADDING="0" 
WIDTH="100%"BORDER="0"ID="tblRoot"NAME="tblRoot" 
style="table-layout:fixed;"> 
<TR> 
<xsl:for-eachselect="xml/folders/folder"> 
<xsl:elementname="TD"> 
<xsl:attributename="style">width:55px</xsl:attribute> 
<xsl:value-ofselect="text"/> 
</xsl:element> 
</xsl:for-each> 
<TD></TD> 
</TR> 
<xsl:for-eachselect="xml/folders/folder"> 
<TR> 
<xsl:elementname="TD"> 
<xsl:attributename="colspan"> 
<xsl:value-ofselect="fn:getElementCount(.,&#39;folder&#39;)"/> 
</xsl:attribute> 

<TABLECELLSPACING="0"CELLPADDING="0" 
WIDTH="100%"BORDER="0"style="table-layout:fixed;"> 
<TR> 
<xsl:for-eachselect="files/file"> 
<xsl:elementname="TD"> 
<xsl:attributename="style">width:55px;</xsl:attribute> 
<xsl:value-ofselect="text"/> 
</xsl:element> 
</xsl:for-each> 
<TD></TD> 
</TR> 
<xsl:for-eachselect="files/file"> 
<TR> 
<xsl:elementname="TD"> 
<xsl:attributename="colspan"> 
<xsl:value-ofselect="fn:getElementCount(.,&#39;file&#39;)"/> 
</xsl:attribute> 
<xsl:for-eachselect="fields/field"> 
<xsl:elementname="INPUT"> 
<xsl:attributename="type">text</xsl:attribute> 
<xsl:attributename="maxlength"> 
<xsl:value-ofselect="data/length"/> 
</xsl:attribute> 
<xsl:attributename="value"> 
<xsl:value-ofselect="data/value"/> 
</xsl:attribute> 
</xsl:element><BR/> 
</xsl:for-each> 
</xsl:element> 
</TR> 
</xsl:for-each> 
</TABLE> 
</xsl:element> 
</TR> 
</xsl:for-each> 
</TABLE> 
</xsl:template> 
</xsl:stylesheet>

Im Stylesheet-Tag sind mehrere Namespaces festgelegt, einschließlich der Definition aller XSL-Transformationen Der XSL-Namespace des Tags. Ein MSXML-Namespace, der es uns ermöglicht, BenutzerFunktionen zu erstellen, die in Stylesheets verwendet werden können. Verwenden Sie dies, um alle untergeordneten Elemente abzurufen, um einen Satz COLSPAN-Attribute für ein TD-Tag zu erhalten. Der fn-Namespace, der zum Verbinden einer Reihe benutzerdefinierter Funktionen verwendet wird, die vom msxml:script-Element erstellt wurden.
Dann erstellen wir die äußere TABELLE und das erste TR. Erstellen Sie im TR ein TD für jeden im XML angegebenen Ordner. Das xsl:element-Tag wird verwendet, weil es das Hinzufügen benutzerdefinierter Attribute oder das Ausführen einer Funktion zum Festlegen einer Eigenschaft für das COLSPAN-Attribut in einem anderen TD-Element ermöglicht.
Nachdem Sie für jeden Ordner das erforderliche TD erstellt haben, beginnen Sie mit der Erstellung von TR für jeden Ordner. Fügen Sie diesem TR nur ein TD hinzu, aber setzen Sie dessen COLSPAN-Attribut auf die Anzahl der Ordner-Tags in der Ordnergruppe plus eins. Das zusätzliche wird verwendet, um Leerzeichen in einer TABLE mit festem Layout zu füllen.
Um COLSPAN zu erhalten, übergeben Sie den aktuellen Kontext (hier durch „.“ angegeben) und den Namen des zu berechnenden Knotens. Rufen Sie in der Funktion den aktuellen Kontext, paraentNode und die Anzahl der in XPath query angegebenen Knoten ab. Die Funktion gibt dann diesen Betrag plus eins zurück, um den TD zu füllen.
Betten Sie mit diesem TD eine weitere TABLE ein, die jede Datei in der Dateigruppe enthält. Ab diesem Zeitpunkt ist der Vorgang derselbe wie bei einer externen TABLE-Konvertierung. Der letzte Schritt besteht darin, die Felder in jeder Datei hinzuzufügen.
Sobald das allgemeine Layout fertig ist, können Sie mit dem Hinzufügen von Benutzeroberflächenfunktionen beginnen, wie z. B. dem Ausblenden anderer Ordner und Dateizeilen, bis der Benutzer auf die entsprechende Registerkarte klickt. Diese Funktionalität kann erreicht werden, indem ein Skript geschrieben wird, das diese Funktionalität unterstützt, ein onclick xsl:attribute-Element zu den Ordner- und Datei-TD-Elementen hinzugefügt wird und dann dessen Wert auf den Namen der Skriptfunktion gesetzt wird.
Schließlich, nachdem die allgemeine Funktionalität abgeschlossen ist, können Sie die Klasse xsl:attributes und zugehörige Klassennamen in STYLE oder CSS hinzufügen, um das gewünschte Aussehen zu erhalten.
Dieses Beispiel erstellt eine Grundlage für die Dateiordnerfeld-Ansicht, die bei der Bereitstellung von Webdatenlösungen verwendet wird. Besuchen Sie MSDN, um mehr über die XML-Spezifikation von Microsoft zu erfahren.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Beispielcode zur Konvertierung von XML-Daten in HTML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn