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
![Verärgert](https://entwickler-forum.de/core/images/smilies/mad.png)
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