Oracle APEX: HTML Tags bei Substitution Syntax
In Oracle APEX können Page und Application Items auf mehrere Arten verwendet werden. Mittels Bind-Syntax (:PXXX_ITEM) etwa in SQL oder PL/SQL Ausdrücken oder mittels Substitution-Syntax in Texten. Das bedeutet wir können beispielsweise in einem Page Process ein Hidden Page Item mit einem Wert versorgen, wie der Erfolgsmeldung eines Funktionsaufrufs, und dieses dann per Substitution-Syntax als Erfolgsmeldung ausgeben lassen (siehe folgender Screenshot).

Wenn nun HTML-Tags in dem Rückgabewert sind, dann werden diese escaped und damit im Klartext angezeigt, was das folgende Verhalten verursacht.
![]()
Leider gibt es keine offensichtliche deklarative Möglichkeit, dieses Verhalten zu unterbinden. HTML-Tags werden bei der Verwendung der Substitution Syntax aus Sicherheitsgründen (Stichwort XSS – Cross Site Scripting) immer escaped. Man kann allerdings in der Substition-Syntax Zusätze wie !RAW verwenden, wodurch sich das Escape Verhalten beeinflussen lässt. Der !RAW Zusatz zum Beispiel bewirkt, dass der Text as-is, also exakt so wie er gespeichert ist ausgegeben wird (VORSICHT: Bei Texten über die man keine 100%ige Kontrolle hat, weil sie z.B. durch User Eingaben entstehen ist das eine massive Sicherheitslücke in Bezug auf Cross Site Scripting!!!). Die Zusätze bestehen immer aus einem ! und einem vordefinierten Filterbegriff welche direkt VOR dem Punkt am Ende ergänzt, also z.B. &PXXX_ITEM!RAW. Wenn wir also die oben gezeigte Logik auf folgenden Aufruf anpassen

Dann sieht die Erfolgsmeldung wie folgt aus
Abgesehen von RAW gibt es lt. Doku noch folgende Optionen:
- HTML: escaped HTML-reservierte Zeichen (ident zur Funktion HTML im Package APEX_ESCAPE)
- ATTR: escaped Zeichen, welche für HTML-Attribute reserviert sind (ident zur Funktion HTML_ATTRIBUTE im Package APEX_ESCAPE)
- JS: escaped Zeichen, die im Javascript Kontext reserviert sind (ident zur Funktion JS_LITERAL im Package APEX_ESCAPE)
- STRIPHTML: entfernt alle HTML-Tags aus dem Wert und escaped alle HTML-reservierten Zeichen
Informationen dazu findet ihr hier.

Christoph Hillinger ist Senior Oracle Developer und seit vielen Jahren Oracle APEX und ODI Spezialist bei DBConcepts.






