7 Stimmen

Xpath-Funktion zum Entfernen von Leerzeichen

Ich versuche, XSL und Xpath-Funktionen zu verwenden, um alle Leerzeichen aus einem XML-Attribut namens name zu entfernen und es in Kleinbuchstaben umzuwandeln. Im Moment habe ich etwas wie

Dies entfernt die Leerzeichen am Anfang und Ende, aber nicht in der Mitte. Irgendwelche Vorschläge?

Was ist die bewährte Praxis im Umgang mit und Ändern von XML-Daten, da es scheint, dass du verwenden kannst

direkt im HTML platziert werden

oder

oder einen

Ich bin mir nicht wirklich sicher über die Unterschiede oder wann jeder verwendet werden sollte. Jegliche Hilfe wird sehr geschätzt.

Ally

6voto

Robert Rossney Punkte 91100

Wie Tim Robinson darauf hinweist, wird translate den Trick machen. (Ich würde es nicht als "Hack" bezeichnen, aber ich bin schon lange in der Phase der Identifizierung mit meinen Folterknechten in meiner Beziehung zu XSLT.) Ihr Code wird viel lesbarer, wenn Sie so etwas verwenden:

...was ein Teil der Datei globals.xslt ist, die ich am Anfang der meisten von mir geschriebenen Transformationen einfüge. Dann das:

übersetzt jeden Großbuchstaben in sein entsprechendes Kleinbuchstaben und jedes Leerzeichen in nichts.

Gewöhnlich nutzen Sie xsl:variable, um den Code lesbarer zu machen (wie im obigen Beispiel) oder um Zwischenergebnisse zu speichern, die anderweitig nicht effektiv berechnet werden können. Eine vierte Möglichkeit, Daten in die Ausgabe zu übergeben, ist eine, die Sie nicht erwähnt haben und die ziemlich nützlich ist: das Attributwerttemplate. Alle diese Möglichkeiten machen dasselbe:

In diesem speziellen Fall lässt sich argumentieren, welches der beiden letzten Beispiele einfacher und klarer ist. Die meiste Zeit ist es jedoch nicht so: Die Trennung der Berechnung von Werten von der Art und Weise, wie sie in die Ausgabe eingefügt werden, macht beide einfacher zu verstehen, ebenso wie die Verwendung eines AVT anstelle von ausführlicheren XSLT-Konstruktionen, die dasselbe tun.

3voto

Tim Robinson Punkte 51702

Dies entfernt den Leerraum am Anfang und am Ende, nicht aber in der Mitte. Irgendwelche Vorschläge?

Sie könnten translate(' ', '') verwenden, um Leerzeichen, Zeilenumbrüche und Wagenrückläufe zu entfernen. Wenn Sie die .NET-Klassen oder MSXSL zum Transformieren verwenden, ist es etwas schwierig, Zeichen in Kleinbuchstaben umzuwandeln. Einen Trick, den ich verwendet habe, ist transform, um Großbuchstaben in ihre entsprechenden Kleinbuchstaben umzuwandeln; ein anderer ist, eine .NET-Erweiterungsklasse zu schreiben, um eine lower-case-Funktion bereitzustellen. Die lower-case-Funktion ist in XPath/XSL 2.0 integriert.

Im zweiten Teil Ihrer Frage tun sie verschiedene Dinge:

  • platziert einen Wert direkt im HTML * `erstellt ein Attribut im aktuellen HTML-Element und weist ihm einen Wert zu` ``* `deklariert eine XSL-Variable, ohne das HTML zu beeinflussen. Sie können diese Variable ins HTML schreiben, indem Sie verwenden.` ``

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X