Diese Vorlagen-Engine ist praktischer. Sie wird mit HTML kombiniert. Der Kopiercode lautet wie folgt:
Klassenvorlage
Privat c_Char, c_Path, c_FileName, c_Content, c_PageUrl, c_CurrentPage, c_PageStr, ReplacementPageStr
Privater TagName
' *****************************************
'Kodierung festlegen
' *****************************************
Öffentliches Eigentum Let Char(ByVal Str)
c_Char = Str
End-Eigenschaft
Öffentliches Eigentum Get Char
Char = c_Char
End-Eigenschaft
' *****************************************
'Legen Sie den Pfad zum Vorlagenordner fest
' *****************************************
Öffentliches Eigentum Let Path(ByVal Str)
c_Path = Str
End-Eigenschaft
Pfad zum Abrufen von öffentlichem Eigentum
Pfad = c_Path
End-Eigenschaft
' *****************************************
'Name der Vorlagendatei festlegen
' *****************************************
Öffentliche Eigenschaft Let FileName(ByVal Str)
c_FileName = Str
End-Eigenschaft
Öffentliche Eigenschaft Get FileName
Dateiname = c_Dateiname
End-Eigenschaft
' *****************************************
' Rufen Sie den spezifischen Pfad der Vorlagendatei ab
' *****************************************
Öffentliche Eigenschaft FilePath abrufen
Wenn Len(Pfad) > 0, dann ist Pfad = Ersetzen(Pfad, /, /)
Wenn Right(Path, 1) <> / Then Path = Path & /
FilePath = Pfad und Dateiname
End-Eigenschaft
' *****************************************
'Paging-URL festlegen
' *****************************************
Öffentliches Eigentum Let PageUrl(ByVal Str)
c_PageUrl = Str
End-Eigenschaft
Öffentliches Eigentum. Holen Sie sich PageUrl
PageUrl = c_PageUrl
End-Eigenschaft
' *****************************************
'Stellen Sie das Paging der aktuellen Seite ein
' *****************************************
Öffentliche Eigenschaft Let CurrentPage(ByVal Str)
c_CurrentPage = Str
End-Eigenschaft
Öffentliche Eigenschaft Get CurrentPage
CurrentPage = c_CurrentPage
End-Eigenschaft
' *****************************************
'Inhalt ausgeben
' *****************************************
Öffentliches Eigentum wird gespült
Response.Write(c_Content)
End-Eigenschaft
' *****************************************
'Klasseninitialisierung
' *****************************************
Private Sub Class_Initialize
TagName = pjblog
c_Char = UTF-8
ReplacementPageStr = Array(, )
Sub beenden
' *****************************************
' Filtern Sie widersprüchliche Zeichen
' *****************************************
Private Funktion doQuote(ByVal Str)
doQuote = Ersetzen(Str, Chr(34), )
Funktion beenden
' *****************************************
' Klassenabbruch
' *****************************************
Private Unterklasse_Terminate
Sub beenden
' *****************************************
'Dateimethode laden
' *****************************************
Private Funktion LoadFromFile(ByVal cPath)
Dim obj
Set obj = Server.CreateObject(ADODB.Stream)
Mit obj
.Typ = 2
.Modus = 3
.Offen
.Charset = Char
.Position = .Größe
.LoadFromFile Server.MapPath(cPath)
LoadFromFile = .ReadText
.schließen
Ende mit
Setze obj = Nichts
Funktion beenden
'*********************************************
' Holen Sie sich das reguläre passende Objekt
'*********************************************
Öffentliche Funktion GetMatch(ByVal Str, ByVal Rex)
Dim Reg, Mag
Set Reg = New RegExp
Mit Reg
.IgnoreCase = True
.Global=True
.Muster = Rex
Setze Mag = .Execute(Str)
Wenn Mag.Count > 0, dann
Setze GetMatch = Mag
Anders
Setze GetMatch = Server.CreateObject(Scripting.Dictionary)
Ende wenn
Ende mit
Setze Reg = nichts
Funktion beenden
' *****************************************
'Dokument öffnen
' *****************************************
Öffentlicher Sub geöffnet
c_Content = LoadFromFile(FilePath)
Sub beenden
' *****************************************
'Gepufferte Ausführung
' *****************************************
Öffentlicher Unterpuffer
c_Content = GridView(c_Content)
Rufen Sie ExecuteFunction auf
Sub beenden
' *****************************************
'GridView
' *****************************************
Private Funktion GridView(ByVal o_Content)
Dim Matches, SubMatches, SubText
Dimmattribut, Inhalt
Set Matches = GetMatch(o_Content, /< & TagName & /:(/d+?)(.+?)/>([/s/S]+?)<// & TagName & /:/1/>)
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
Attribut = SubMatches.SubMatches(1) ' kocms
Inhalt = SubMatches.SubMatches(2) ' <Columns>...</Columns>
SubText = Process(Attribute, Content) 'Gibt die Ergebnisse aller Prozessausführungen zurück
o_Content = Replacement(o_Content, SubMatches.value, < & SubText(2) & SubText(0) & > & SubText(1) & </ & SubText(2) & >, 1, -1, 1) ' Beschriftungsvariable ersetzen
Nächste
Ende wenn
Übereinstimmungen festlegen = Nichts
If Len(ReplacePageStr(0)) > 0 Then ' Bestimmen Sie, ob die Beschriftungsvariable einen Wert hat, und ersetzen Sie ihn, wenn dies der Fall ist.
o_Content = Ersetzen(o_Content, ErsetzenPageStr(0), ErsetzenPageStr(1), 1, -1, 1)
ReplacementPageStr = Array(, ) 'Löschen Sie die Array-Variable nach dem Ersetzen
Ende wenn
GridView = o_Content
Funktion beenden
' *****************************************
' Attribute bestimmen
' *****************************************
Privater Funktionsprozess (ByVal-Attribut, ByVal-Inhalt)
Dimmen Sie Übereinstimmungen, Unterübereinstimmungen und Text
MatchTag, MatchContent dimmen
Datenquelle, Name, Element, Seite, ID abblenden
Datenquelle =: Name =: Element =: Seite = 0: ID =
Set Matches = GetMatch(Attribute, /s(.+?)/=/(.+?)/)
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
MatchTag = SubMatches.SubMatches(0) ' Holen Sie sich den Attributnamen
MatchContent = SubMatches.SubMatches(1) ' Attributwert abrufen
If Lcase(MatchTag) = name Then Name = MatchContent ' Ruft den Namensattributwert ab
If Lcase(MatchTag) = datasource Then datasource = MatchContent' Ruft den Wert des Datenquellenattributs ab
If Lcase(MatchTag) = element Then Element = MatchContent ' Elementattributwert abrufen
If Lcase(MatchTag) = page Then page = MatchContent ' Ruft den Seitenattributwert ab
If Lcase(MatchTag) = id Then id = MatchContent ' Den id-Attributwert abrufen
Nächste
Wenn Len(Name) > 0 und Len(MatchContent) > 0, dann
Text = Analysis(datasource, Name, Content, page, id) 'Parsing-Eigenschaften durchführen
Wenn Len(Datenquelle) > 0, dann Attribut = Ersetzen(Attribut, Datenquelle= & Datenquelle & , )
Wenn Seite > 0, dann Attribut = Ersetzen(Attribute, Seite= & Seite &, )
Attribut = Ersetzen(Attribut, name= & Name & , , 1, -1, 1)
Attribut = Ersetzen(Attribut, element= & Element & , , 1, -1, 1)
Prozess = Array (Attribut, Text, Element)
Anders
Prozess = Array(Attribut, , div)
Ende wenn
Anders
Prozess = Array(Attribut, , div)
Ende wenn
Übereinstimmungen festlegen = Nichts
Funktion beenden
' *****************************************
' Analysieren
' *****************************************
Private Funktionsanalyse (ByVal-ID, ByVal-Name, ByVal-Inhalt, ByVal-Seite, ByVal-Seiten-ID)
Daten abdunkeln
Wählen Sie Case Lcase(Name) 'Datenquelle auswählen
Fallschleife Data = DataBind(id, Content, page, PageID)
Fall für Daten = DataFor(id, Content, page, PageID)
Endauswahl
Analyse=Daten
Funktion beenden
' *****************************************
'Datenquelle binden
' *****************************************
Private Funktion DataBind(ByVal id, ByVal Content, ByVal page, ByVal PageID)
Dimmen Sie Text, Übereinstimmungen, Unterübereinstimmungen, Untertext
Execute Text = & id & (1) 'Datenquelle laden
Set Matches = GetMatch(Content, /<Columns/>([/s/S]+)/<//Columns/>)
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
SubText = ItemTemplate(SubMatches.SubMatches(0), Text, page, PageID)' Modulaustausch durchführen
Inhalt = Ersetzen(Inhalt, SubMatches.value, SubText, 1, -1, 1)
Nächste
DataBind = Inhalt
Anders
DataBind=
Ende wenn
Übereinstimmungen festlegen = Nichts
Funktion beenden
' *****************************************
' Übereinstimmung mit der Vorlageninstanz
' *****************************************
Private Function ItemTemplate(ByVal TextTag, ByVal Text, ByVal page, ByVal PageID)
Dim Matches, SubMatches, SubMatchText
Dimmen Sie SecMatch, SecSubMatch
Dim i, TempText
Dimmen Sie TextLen, TextLeft, TextRight
Set Matches = GetMatch(TextTag, /<ItemTemplate/>([/s/S]+)/<//ItemTemplate/>)
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
SubMatchText = SubMatches.SubMatches(0)
'-----------------
' Schleifenverschachtelung starten
'-----------------
SubMatchText = GridView(SubMatchText)
'-----------------
' Ende der Schleifenverschachtelung
'-----------------
Wenn UBound(Text, 1) = 0, dann
TempText=
Anders
TempText=
'----------------------------------------------------------------
„Beginnen Sie mit dem Paging
'----------------------------------------------------------------
Wenn Len(Seite) > 0 und Seite > 0, dann
Wenn Len(CurrentPage) = 0 oder CurrentPage = 0, dann ist CurrentPage = 1
TextLen = UBound(Text, 2)
TextLeft = (CurrentPage - 1) * Seite
TextRight = CurrentPage * Seite - 1
Wenn TextLeft < 0, dann ist TextLeft = 0
Wenn TextRight > TextLen, dann TextRight = TextLen
c_PageStr = MultiPage(TextLen + 1, page, CurrentPage, PageUrl, float:right, , False)
Wenn Int(Len(c_PageStr)) > 0 Dann
ReplacementPageStr = Array(<page: & Trim(PageID) & />, c_PageStr)
Anders
ReplacementPageStr = Array(<page: & Trim(PageID) & />, )
Ende wenn
Anders
TextLeft = 0
TextRight = UBound(Text, 2)
Ende wenn
Für i = TextLeft To TextRight
TempText = TempText & ItemReSec(i, SubMatchText, Text) 'Vorlageninhalt laden
Nächste
Ende wenn
Nächste
ItemTemplate = TempText
Anders
ItemTemplate =
Ende wenn
Übereinstimmungen festlegen = Nichts
Funktion beenden
' *****************************************
'Vorlagenzeichenfolge ersetzen
' *****************************************
Private Funktion ItemReSec(ByVal i, ByVal Text, ByVal Arrays)
Dim Matches, SubMatches
Set Matches = GetMatch(Text, /$(/d+?))
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
Text = Replacement(Text, SubMatches.value, doQuote(Arrays(SubMatches.SubMatches(0), i)), 1, -1, 1) 'Ersetzung durchführen
Nächste
ItemReSec = Text
Anders
ItemReSec=
Ende wenn
Übereinstimmungen festlegen = Nichts
Funktion beenden
' *****************************************
'Globale Variablenfunktion
' *****************************************
Private Sub ExecuteFunction
Dimmen Sie Übereinstimmungen, Unterübereinstimmungen, Text, ExeText
Set Matches = GetMatch(c_Content, /<function/:([0-9a-zA-Z_/.]*?)/((.*?)/(.+?)/(.*?)/)// />)
Wenn Matches.Count > 0, dann
Für jede Unterübereinstimmung in Übereinstimmungen
Text = SubMatches.SubMatches(0) & ( & SubMatches.SubMatches(1) & & SubMatches.SubMatches(2) & & SubMatches.SubMatches(3) & )
Führen Sie ExeText= & Text aus
c_Content = Ersetzen(c_Content, SubMatches.value, ExeText, 1, -1, 1)
Nächste
Ende wenn
Übereinstimmungen festlegen = Nichts
Sub beenden
' *****************************************
' Gewöhnlicher Ersatz globaler Etiketten
' *****************************************
Öffentliche Eigenschaft Let Sets(ByVal t, ByVal s)
Dimmen Sie SetMatch, Bstr, SetSubMatch
Set SetMatch = GetMatch(c_Content, (/<Set/:([0-9a-zA-Z_/.]*?)/(((.*?) & t & (.*?))?/)// />))
Wenn SetMatch.Count > 0, dann
Für jedes SetSubMatch in SetMatch
Ausführen Bstr = & SetSubMatch.SubMatches(1) & ( & SetSubMatch.SubMatches(3) & & s & & SetSubMatch.SubMatches(4) & )
c_Content = Ersetzen(c_Content, SetSubMatch.Value, Bstr, 1, -1, 1)
Nächste
Ende wenn
Setze SetMatch = Nothing
Set SetMatch = GetMatch(c_Content, (/<Set/: & t & ///>))
Wenn SetMatch.Count > 0, dann
Für jedes SetSubMatch in SetMatch
c_Content = Ersetzen(c_Content, SetSubMatch.Value, s, 1, -1, 1)
Nächste
Ende wenn
Setze SetMatch = Nothing
End-Eigenschaft
Unterricht beenden