Tabelle A:
1-0-1,this is a test 3-1-1,this is a test 4-3-1,this is a test 5-3-1,this is a test 2-0-2,this is a test
Das Obige ist ein Beispiel für eine BBS-Themenliste. Wenn Sie Oracle nicht verwenden (Oracle verfügt über eine Abfrageanweisung, die automatisch einen Stammbaum generieren kann, überprüfen Sie bitte die Anweisung Select ... startwith ... connect by ...), wie Sie die Liste im Allgemeinen implementieren Das obige Beispiel ist eine mühsame Aufgabe (ich glaube, viele Programmierer haben dies geschrieben).
Was wird das Ergebnis sein, wenn wir stattdessen XML verwenden?
Jetzt verwenden wir „Select * from bbs“, um Beiträge aus der Datenbank abzufragen und sie im XML-Format zurückzugeben (wenn Sie ADO verwenden, können Sie dessen RecordSet.Save... adPersistXML verwenden, um sie direkt zu generieren. Natürlich, Wenn es Ihnen nicht gefällt, kann das von ADO generierte Format von einem Programm wie diesem Beispiel generiert werden):
Tabelle B:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="b.xsl"?> <bbs> <post sid="4" pid="3" aid="1"> <title>4-3-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="5" pid="3" aid="1"> <title>5-3-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="3" pid="1" aid="1"> <title>3-1-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="1" pid="0" aid="1"> <title>1-0-1,this is a test</title> <content>slddfjslajfsdljf</content> </post> <post sid="2" pid="0" aid="2"> <title>2-0-2,this is a test</title> <content>slddfjslajfsdljf</content> </post> </bbs>
Hinweis: Sid hier ist das ID-Nummer des Beitrags und pid ist die übergeordnete ID der Beitragsnummer. title ist der Titel und content ist der Inhalt des Beitrags.
Die zweite Zeile in der obigen Tabelle gibt die Verwendung von b.XSL zum Konvertieren von XML-Inhalten an. Dies sind die Informationen, die IE5 bereitgestellt werden. Wenn Sie XMLDOM verwenden, benötigen Sie diese Nachricht nicht.
Sehen wir uns an, wie der XML-Inhalt der obigen Tabelle in einer XSL-Datei in Form von Tabelle A angezeigt wird:
Tabelle C: b.XSL
<?xml version=''1.0''?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="*"/> </body> </html> </xsl:template> <xsl:template match="post"> <li> <div> <xsl:attribute name="title"><xsl:value-of select="content"/></xsl:attribute> <xsl:value-of select="title"/> <xsl:if test="/bbs/post[@pid=context()/@sid]"> <xsl:element name="ul"> <xsl:apply-templates select="/bbs/post[@pid=context()/@sid]"/> </xsl:element> </xsl:if> </div> </li> </xsl:template> <xsl:template match="bbs"> <ul> <xsl:apply-templates select="post[@pid=0]"/> </ul> </xsl:template> </xsl:stylesheet>
Wenn Sie nun den Inhalt von Tabelle B als abc.xml speichern, den Inhalt von Tabelle C als b.xsl speichern und ihn dann in IE5 öffnen, können Sie denselben Inhalt wie in Tabelle A sehen.
Es ist also ersichtlich, dass die XSL-Datei das endgültige Anzeigeergebnis bestimmt. Wenn Sie über mehrere Unterforen verfügen, ist es nicht erforderlich, das Forenprogramm zu ändern. Solange Sie für jedes Unterforum unterschiedliche XSL-Dateien bereitstellen, können Sie dafür sorgen, dass jedes Unterforum unabhängig von Stil, Bildschirm usw. eine einzigartige Leistung aufweist Themenanordnung. Wenn kostenlose Forendienste bereitgestellt werden, wäre es eine gute Wahl, Forumsantragstellern die Möglichkeit zu geben, ihre eigenen XSL-Dateien anzupassen.
Was aber, wenn der Client XML nicht unterstützt? Die Antwort ist einfach: Der Server wandelt XML zunächst in HTML um und übermittelt es dann an den Client.
Als nächstes verwenden wir IIS4/5+IE5+asp, um dieses Beispiel zu implementieren (auf dem Server muss IE5 installiert sein):
<%@ LANGUAGE = JScript %> <% Set rsXML=Server.CreateObject("ADODB.RecordSet"); sSQL = “SELECT * from bbs" sConn = “你自个儿写” rsXML.CursorLocation = adUseClient rsXML.Open sSQL, sConn, adOpenStatic //指定XSL文件位置 var styleFile = Server.MapPath("simple.xsl"); // Save the XML to XMLDOM var source = Server.CreateObject("Microsoft.XMLDOM"); ''rsXML.Save source, adPersistXML ''我相当不喜欢ADO直接Save出来的XML文档,我总是这样做: Dim GetData,v GetData = GetData & "<bbs>" while not RS_ForumInfo.EOF GetData = GetData & "<post>" for i = 0 to RS_ForumInfo.Fields.Count -1 set v = RS_ForumInfo.Fields.Item(i) if (v.Type=201)or(v.Type=203)or(v.Type=205) then GetData = GetData& "<" & RS_ForumInfo.Fields.Item(i).Name &">" &_ "<![CDATA[" & RS_ForumInfo.Fields.Item(i).Value & "]]>" &_ "</" & RS_ForumInfo.Fields.Item(i).Name &">" else GetData = GetData& "<" & RS_ForumInfo.Fields.Item(i).Name &">" &_ RS_ForumInfo.Fields.Item(i).Value &_ "</" & RS_ForumInfo.Fields.Item(i).Name &">" end if set v = Nothing next GetData = GetData & "</post>" RS_ForumInfo.MoveNext wend GetData = GetData & "</bbs>" source.loadXML GetData // Load the XSL var style = Server.CreateObject("Microsoft.XMLDOM"); style.async = false; style.load(styleFile); Response.Write(source.transformNode(style)); %>
Der Einfachheit halber ist hier natürlich ADO angegeben Wird direkt zum Generieren von XML verwendet, daher sind simple.xsl und b.xsl oben unterschiedlich.
Leser können sich zum Schreiben auf das obige Beispiel und XSL-Referenzmaterial beziehen (MSDN im Jahr 2000 verfügt über ein detaillierteres XML/XSL-SDK-Dokument). (Ende)
Das Obige ist die detaillierte Einführung in die Verwendung von XML zur Implementierung von BBS (Themenliste). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!