26.10 HTML_ATTRIBUTEファンクション
重要:
プレーン・テキスト属性(title、placeholder、aria-labelなど)にHTML_ATTRIBUTEを使用すると、エンド・ユーザーにHTMLコードを公開できます。同様のプレーン・テキスト属性について、エンド・ユーザーに公開されるHTMLコードを除外するには、HTML_ATTRIBUTEファンクションのコールを回避します。
警告:
HTML_ATTRIBUTEファンクションを使用してaria-label、alt、summaryなどの属性をエスケープしないでください。これは、それらの属性により、視覚的に表示されないコンテンツが生成され、それらが、HTMLコードがアシスティブ・テクノロジのユーザーに公開されたときに明白でなくなるためです。
ヒント:
このファンクションのかわりにGET_HTML_ATTRファンクションを使用してすべてのHTML属性をエスケープすることをお薦めします。
GET_HTML_ATTRでは、属性値をエスケープするための適切なアルゴリズムを選択できます。
このファンクションは、HTMLエンティティ属性の値をエスケープします。このAPIでは、英数字や次のいずれかの文字以外のすべてが16進形式でエスケープされます。
- ,
- .
- -
- _
構文
APEX_ESCAPE.HTML_ATTRIBUTE (
p_string IN VARCHAR2 )
RETURN VARCHAR2 deterministic;
パラメータ
パラメータ | 説明 |
---|---|
p_string |
エスケープされるテキスト文字列。 |
例
この例では、タイトルおよびテキスト本文のHTMLリストを生成します。HTMLのエンティティ属性はHTML_ATTRIBUTE
を使用してエスケープされ、通常のテキストはHTML
およびHTML_TRUNC
を使用してエスケープされます。
BEGIN
htp.p('<ul>');
for l_data in ( select title, cls, body
from my_topics )
LOOP
sys.htp.p('<li><span class="'||
apex_escape.html_attribute(l_data.cls)||'">'||
apex_escape.html(l_data.title)||'</span>');
sys.htp.p(apex_escape.html_trunc(l_data.body));
sys.htp.p('</li>');
END LOOP;
htp.p('</ul>');
END;
親トピック: APEX_ESCAPE