Hallo,
ich bin ein (alter )prozeduraler Programmier und schlage mich seit einiger Zeit mit xml und xslt herum. Jetzt habe ich folgendes Problem:
In einer XML-Datei steht eine durch einen z.B. <DatenbankQuery> Tag begrenzte Datenbankabfrage. Als Besonderheit sind innerhalb dieses Tags spezielle Wörter enthalten, die durch ein Sonderzeichen, z.B. $, angeführt werden. Diese speziellen Wörter stellen Variablen dar, die durch eine Transformation mit XSL durch Wörter ersetzt werden sollen, die laufzeitspezifisch sind, z.B. das Datum oder die momentane Uhrzeit; etwa so:
<DatenbankQuery>
select NOTIFICATION_ID, SOURCE_TIME from NOTIFICATION_BACKUP where SOURCE_TIME > DATE_SUB( SYSDATE(), INTERVAL $timeSpec $timeUnit ) and SRC_PHYS_SYS_INST = '$src_phys_sys_inst' and SOURCE_CLASS = '$source_class';
<DatenbankQuery>
Technisch sieht diese Transformation so aus, dass in einem Text-Knoten zunächst die in Frage kommende Textkette bestimmt wird, und dann durch eine xslt-Variable, die bereits im Stylesheet definiert ist, ersetzt wird. Durch eine <xsl:value-of select=...> Transformation mit dieser Variablen soll darüber hinaus das Statement ersetzt werden. Dieser Vorgang soll für alle speziellen Wörter innerhalb des Tags (Elementes) durchgeführt werden.
Der Pseudokode:
in allen Elementen
do <solange, wie noch Wörter mit dem Sonderzeichen da sind>
if <Wort in einem Textknoten beginnt mit $>
setze dieses Wort innerhalb <xsl:value-of select=$wort>
endif
endo
end
Wie seht diese Transformation durch XSLT aus?
Ludger
ich bin ein (alter )prozeduraler Programmier und schlage mich seit einiger Zeit mit xml und xslt herum. Jetzt habe ich folgendes Problem:
In einer XML-Datei steht eine durch einen z.B. <DatenbankQuery> Tag begrenzte Datenbankabfrage. Als Besonderheit sind innerhalb dieses Tags spezielle Wörter enthalten, die durch ein Sonderzeichen, z.B. $, angeführt werden. Diese speziellen Wörter stellen Variablen dar, die durch eine Transformation mit XSL durch Wörter ersetzt werden sollen, die laufzeitspezifisch sind, z.B. das Datum oder die momentane Uhrzeit; etwa so:
<DatenbankQuery>
select NOTIFICATION_ID, SOURCE_TIME from NOTIFICATION_BACKUP where SOURCE_TIME > DATE_SUB( SYSDATE(), INTERVAL $timeSpec $timeUnit ) and SRC_PHYS_SYS_INST = '$src_phys_sys_inst' and SOURCE_CLASS = '$source_class';
<DatenbankQuery>
Technisch sieht diese Transformation so aus, dass in einem Text-Knoten zunächst die in Frage kommende Textkette bestimmt wird, und dann durch eine xslt-Variable, die bereits im Stylesheet definiert ist, ersetzt wird. Durch eine <xsl:value-of select=...> Transformation mit dieser Variablen soll darüber hinaus das Statement ersetzt werden. Dieser Vorgang soll für alle speziellen Wörter innerhalb des Tags (Elementes) durchgeführt werden.
Der Pseudokode:
in allen Elementen
do <solange, wie noch Wörter mit dem Sonderzeichen da sind>
if <Wort in einem Textknoten beginnt mit $>
setze dieses Wort innerhalb <xsl:value-of select=$wort>
endif
endo
end
Wie seht diese Transformation durch XSLT aus?
Ludger