Editor gesucht, der automatisch Code einrückt

Status
Nicht offen für weitere Antworten.
Natürlich würde mir das helfen. Es wäre sehr nett, wenn Du das posten könntest. Vielen Dank bereits jetzt :)
 
Hi.

Im Grunde kannst du doch für das Einrücken (von XML/XHTML) jeden XSLT Prozessor verwenden. Mit einem Inditäts-Stylesheet und der unformatierten XML/XHTML Datei als Eingabe gibt der ein eingerücktes Dokument aus wenn das indent Attribut des xsl:eek:utput Elements auf "yes" gesetzt ist.

Bei HTML wird's natürlich etwas schwieriger weil das ja nicht unbedingt ein korrektes / wohlgeformtes XML ist. Aber xsltproc z.B. kann auch mit HTML Dateien umgehen.

Gruß

PS: Für HTML kannst du besser noch HTML Tidy verwenden. Das kann die Ausgabedatei auch einrücken. Zu beachten ist allerdings das durch die Einrückung die Darstellung im Browser von der nicht eingerückten Version abweichen kann.
 
Zuletzt bearbeitet:
deepthroat hat gesagt.:
Hi.

Im Grunde kannst du doch für das Einrücken (von XML/XHTML) jeden XSLT Prozessor verwenden. Mit einem Inditäts-Stylesheet und der unformatierten XML/XHTML Datei als Eingabe gibt der ein eingerücktes Dokument aus wenn das indent Attribut des xsl:eek:utput Elements auf "yes" gesetzt ist.....
Danke fuer die Info. Das klingt interessant. Allerdings kenne ich mich mit XSLT-Prozessoren absolut nicht aus. Was ist das? Ich frage mich ob sich die Einarbeitungszeit in das Thema lohnt, oder ist sowas einfach zu bewerkstelligen? Habe damit keine Erfahrung...
 
Nun, ein XSLT Prozessor ist ein Programm welches anhand eines XSL Stylesheets ein XML Dokument transformiert.

Ich hab mir grad spaßeshalber mal xsltproc für Windows runtergeladen und in den tsWebEditor eingebunden. Funktioniert soweit ganz gut.

Alles was man braucht ist wie gesagt ein Identitätsstylesheet (Stylesheet der keine Transformation durchführt):
XML:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
		xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes" />

<xsl:template match="/">
  <xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>

Die Kommandozeile lautet dann
Code:
xsltproc --novalid --nonet -o file.xml identity.xsl file.xml
Gruß
 
Zuletzt bearbeitet von einem Moderator:
So, ich hab gestern mal daheim geguckt, da hatte ich das Script aber nicht.
Das kommt davon wenn man zum Teil auf der Arbeit scriptet und dann vergisst die Sachen heim zu schicken. :)
Naja, jetzt bin ich ja wieder im Buero und hier ist die Funktion.
PHP:
function formathtml($html)
{
	$tabs=0;
	$html_array=preg_split('/(<(?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+>)/',$html,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
	$html='';
	for ($x=0;$x<count($html_array);$x++)
		{
			if (substr($html_array[$x],0,2)=='</')
				{
					$tabs--;
				}
			for ($y=0;$y<$tabs;$y++)
				{
					$html.="    ";
				}
			$html.=$html_array[$x]."\r\n";
			if ((substr($html_array[$x],0,1)=='<') && (substr($html_array[$x],1,1)!='/'))
				{
					if ((substr($html_array[$x],1,1)!=' ') && (substr($html_array[$x],1,1)!='!') && (substr($html_array[$x],1,3)!='img') && (substr($html_array[$x],1,2)!='br') && (substr($html_array[$x],1,2)!='hr') && (substr($html_array[$x],1,5)!='input') && (substr($html_array[$x],1,4)!='link') && (substr($html_array[$x],1,4)!='meta') && (substr($html_array[$x],1,3)!='col') && (substr($html_array[$x],1,5)!='frame') && (substr($html_array[$x],1,7)!='isindex') && (substr($html_array[$x],1,5)!='param') && (substr($html_array[$x],1,4)!='area') && (substr($html_array[$x],1,4)!='base'))
						{
							$tabs++;
						}
				}
		}
	if ($tabs!=0)
		{
			$html.='<!--'.$tabs." open elements found-->\r\n";
		}
	return $html;
}
Wie gesagt, nicht perfekt, aber okay.
 
Status
Nicht offen für weitere Antworten.
Zurück