Добавление своего без расширений:
<code><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pSeparators" select="'
	 -/.:;='"/>
<xsl:param name="pMaxLength" select="64"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="message">
<pre>
<xsl:call-template name="tokenize"/>
</ XSL: шаблон>
= $ vLength">
</ XSL: вызов-шаблон>
</ XSL: когда>
$ pMaxLength ">
</ XSL: вызов-шаблон>
</ XSL: когда>
</ XSL: вызов-шаблон>
</ XSL: в противном случае>
</ XSL: выберите>
</ XSL: если>
</ XSL: шаблон>
</ XSL: таблицы стилей>
С этим входом:
<t>
<message priority="info"><![CDATA[/usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. main.cpp -o main.moc]]></message>
<message priority="info"><![CDATA[/tmp/Akut/work/1296322206337_e01c972b8fe9b866aded56ff5dde35c3/AspectC++/bin/linux-release/ag++ -p /tmp/Akut/work/1296322206337_e01c972b8fe9b866aded56ff5dde35c3/1297456240104_09fad65d9a05790369dd919025284109_20110211213211/qt-examples --Xcompiler -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -o main.o main.cpp]]></message>
<message priority="info"><![CDATA[/tmp/main.cpp_agxx_c5k6Om: In destructor 'AC::ResultBuffer<T>::~ResultBuffer() [with T = QRectF]':]]></message>
<message priority="info"><![CDATA[/tmp/main.cpp_agxx_c5k6Om:216:33: instantiated from here]]></message>
<message priority="info"><![CDATA[/tmp/main.cpp_agxx_c5k6Om:26:24: warning: dereferencing type-punned pointer will break strict-aliasing rules]]></message>
</t>
Выход:
<code><t><pre>/usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
-DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr
/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4
-I. main.cpp -o main.moc
/tmp/Akut/work/1296322206337_e01c972b8fe9b866aded56ff5dde35c3
/AspectC++/bin/linux-release/ag++ -p /tmp/Akut/work
/1296322206337_e01c972b8fe9b866aded56ff5dde35c3
/1297456240104_09fad65d9a05790369dd919025284109_20110211213211
/qt-examples --Xcompiler -c -pipe -O2 -Wall -W -D_REENTRANT
-DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr
/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I
/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -o main.o main.cpp
/tmp/main.cpp_agxx_c5k6Om: In destructor 'AC::ResultBuffer<T>:
:~ResultBuffer() [with T = QRectF]'
/tmp/main.cpp_agxx_c5k6Om:216:33: instantiated from here
/tmp/main.cpp_agxx_c5k6Om:26:24: warning: dereferencing type
-punned pointer will break strict-aliasing rules
Оказано:
/usr/bin/moc -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
-DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr
/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4
-I. main.cpp -o main.moc
/tmp/Akut/work/1296322206337_e01c972b8fe9b866aded56ff5dde35c3
/AspectC++/bin/linux-release/ag++ -p /tmp/Akut/work
/1296322206337_e01c972b8fe9b866aded56ff5dde35c3
/1297456240104_09fad65d9a05790369dd919025284109_20110211213211
/qt-examples --Xcompiler -c -pipe -O2 -Wall -W -D_REENTRANT
-DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr
/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I
/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -o main.o main.cpp
/tmp/main.cpp_agxx_c5k6Om: In destructor 'AC::ResultBuffer<T>:
:~ResultBuffer() [with T = QRectF]'
/tmp/main.cpp_agxx_c5k6Om:216:33: instantiated from here
/tmp/main.cpp_agxx_c5k6Om:26:24: warning: dereferencing type
-punned pointer will break strict-aliasing rules
Примечание : Основой является мошенничество с несколькими разделителями, «подхватывающее» разделитель (поскольку похоже, что вы хотите сохранить разделитель со следующим элементом).Я не уделил слишком много времени, но логика взлома может быть еще более упрощена.Теперь есть три случая: элемент помещается в текущую строку, элемент не помещается в полную строку (разбить элемент), элемент не помещается в текущую строку, но он помещается в новую строку (новая строка, не разбивать элемент).