26.10 HTML_ATTRIBUTEファンクション

重要:

プレーン・テキスト属性(titleplaceholderaria-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;