Listen alphabetisch sortieren?

04/01/2009 - 11:41 von Carlos | Report spam
Moin!

Habe eine làngere Liste die gelegentlich ergànzt wird. Etwa so:

<ul>
<li>berta</li>
<li>dora</li>
<li>càsar</li>
</ul>

Nun hàtte ich gerne das die Liste *immer* sortiert ausgegeben wird. Also
wenn ich die Liste in Expression Web ergànze, z.B. mit "anton" dann soll sie
automatisch so aussehen:

<ul>
<li>anton</li>
<li>berta</li>
<li>càsar</li>
<li>dora</li>
</ul>

Gibt es irgendeine Möglichkeit dieses mit Expression Web zu realisieren,
oder mit irgend einem Script, oder dem einbinden einer Excel Tabelle
Oder sollte ich das ganze in ner unsichtbaren Tabelle machen die dann, wie
auch immer sortiert wird?
Hat jemand ne Idee?

Schönen Sonntag noch, Gruß
 

Lesen sie die antworten

#1 Christoph Schneegans
04/01/2009 - 13:55 | Warnen spam
"Carlos" schrieb:

Habe eine làngere Liste die gelegentlich ergànzt wird. Nun hàtte
ich gerne das die Liste *immer* sortiert ausgegeben wird.



Das geht sehr gut mit einem VBA-Makro. Unter Vista brauchst du zunàchst das Update <http://support.microsoft.com/kb/957827/en-US>,
sonst stürzen Makros ab, sobald sie gestartet werden.

Starte in xWeb den VBA-Editor (Alt+F11), wàhle "Einfügen > Modul"
und füg diesen Code in das neue Modul ein, den ich ursprünglich in
<http://google.com/groups?selm=5bpc1...al.net>
veröffentlicht habe:

Sub SortList()

'Select "ul" or "ol" element based on cursor location.
Dim rng As IHTMLTxtRange
Set rng = ActiveDocument.Selection.createRange
Dim elm As XWebPage.IHTMLElement
Set elm = rng.parentElement
Do
If elm Is Nothing Then Exit Sub 'Cursor was not in list element.
If elm.tagName = "ul" Or elm.tagName = "ol" Then Exit Do 'List element was found.
Set elm = elm.parentElement 'Move to parent element.
Loop

'Load list into XML document.
Dim source As Object
Set source = CreateObject("MSXML2.DOMDocument.6.0")
source.validateOnParse = False
source.resolveExternals = False
source.async = False
source.LoadXML elm.outerHTML

'Load stylesheet.
Dim stylesheet As Object
Set stylesheet = CreateObject("MSXML2.DOMDocument.6.0")
stylesheet.LoadXML "<s:stylesheet version='1.0' xmlns:s='http://www.w3.org/1999/XSL/Transform'>" & _
"<s:output method='html' omit-xml-declaration='yes' indent='yes'/><s:template match='ul|ol'>" & _
"<s:copy><s:apply-templates><s:sort select='.'/></s:apply-templates></s:copy></s:template>" & _
"<s:template match='node()'><s:copy><s:apply-templates/></s:copy></s:template></s:stylesheet>"
elm.outerHTML = source.transformNode(stylesheet)

End Sub

Speichere das Modul, der Name ist egal. Wechsle wieder zu xWeb und
ggf. in die Entwurfsansicht, setzt den Cursor irgendwo in die Liste,
und drücke Alt+F8. Dann einfach "SortList" doppelt anklicken, um das
Makro zu starten. Dein Code muß wohlgeformtes (nicht
notwendigerweise gültiges) XHTML sein, weil XSLT ein XML-Dokument
benötigt.

Zugegeben, beim ersten Mal ist das eine Menge Arbeit, aber für sich
wiederholende Aufgaben hat sich der Aufwand schon bald amortisiert.

<http://schneegans.de/web/xhtml/> · Klare Antworten zu XHTML

Ähnliche fragen