日本語

開発者ツール · HTML エンティティ エスケープ

Web ページに HTML コードを表示する方法: pre ブロックと code ブロック内で < をエスケープする

· 仕組み

html 開発者ワークフロー エンコード

Web ページ上に HTML コードを表示する方法: ブラウザーセーフな文字参照図として表示される pre および code ブロック内の < をエスケープする
オリジナル ToolAcre ベクトル イラスト

<pre> ブロックはパーサーによるタグの読み取りを停止しないため、コード サンプルをエスケープする必要があります。この投稿では、どの文字を変換するか、サンプル内の </script> がどのようにしてスクリプトを終了するか、サンプルを読み取り可能に保つ方法を正確に示します。

サンプルが作業フォームとしてレンダリングされたチュートリアル — <pre> が生のテキスト要素ではない理由

サンプルが作業フォームとしてレンダリングされたチュートリアル — <pre> が生のテキスト要素ではない理由。 pre 要素は空白を保持しますが、通常の HTML 解析コンテキストのままです。内部のリテラルのボタン タグはボタンを作成するため、インデントだけではマークアップがソース コードに変換されることはありません。

Web ページ上の HTML コードの表示を確認するには、コード サンプルがライブ ボタンとしてレンダリングされるテクニカル ライター向けのサンプルを含むチュートリアルを作成します。コードサンプルのレンダリングが pre である理由を生成する間、レンダリングを作業用として保持します。生のテキストが消費されていない場所を特定します。要素に関する観察は HTML テキストのみに属します。

コード サンプルでエスケープする文字 — 少なくとも < と &、対称性を保つため >、属性内でのみ引用符

コード サンプルでエスケープする文字 — 少なくとも < と &、対称性を保つために >、属性内でのみ引用符を使用します。プレテキストまたはコードテキスト内では、「未満」と「アンパサンド」が必須の置換です。 ToolAcre は、大なり引用符と両方の引用符もエンコードし、一貫した 5 文字のポリシーを生成します。

コード サンプルをライブ ボタンとしてレンダリングするテクニカル ライターは、コード サンプル レンダリング パスの前にコード サンプルに記録することで、どの文字をエスケープするかをテストできます。後で少なくとも と を比較し、対称引用符のみを担当するパーサーを見つけます。この Web ページの結果に HTML コードを表示すると、実行可能なコンテキストではなく属性が説明されます。

</script> トラップ — エスケープされたサンプルは <pre> 内では安全ですが、<script> 内のリテラルサンプルはスクリプト要素を終了する理由

</script> トラップ - エスケープされたサンプルは <pre> では安全ですが、<script> 内のリテラルサンプルではスクリプト要素が終了する理由。スクリプトは、さまざまな終了ルールを持つ生のテキスト要素です。そこではエンティティ参照は普遍的なエスケープではなく、スクリプト要素を閉じるリテラル シーケンスには JavaScript 対応のシリアル化またはアーキテクチャ上の回避が必要です。

短いコードサンプル レンダリング サンプルでスクリプト トラップの理由を分離します。エスケープされたサンプルがリテラルのソースであることを示し、pre からその宛先までのセーフに従い、内部でリテラルを読み取る API に名前を付けます。 Web ページに HTML コードを表示する場合、スクリプトが終了すると、スクリプトはパーサーにバインドされた証拠が残ります。

実用的な例: 10 行の HTML スニペットをエスケープする前と後、およびレンダリングされた結果

実用的な例: 10 行の HTML スニペットのエスケープ前と後、およびレンダリングされた結果。 <form><button>Save</button></form> で始まる複数行のサンプルは、改行とタブが正確に保持されたまま、<form><button>Save</button></form>, になります。

a をエスケープする動作例を境界実験として扱います。コード サンプルをライブ ボタンとしてレンダリングするテクニカル ライターは、10 行の HTML スニペットを保持し、コード サンプルのレンダリング操作を 1 回実行し、レンダリング結果を変更する前に前後および文字ごとに検査する必要があります。コードサンプルレンダリングの証拠に関する主張は、この HTML 層にとどまります。

静的サイト ジェネレーターと Markdown で囲まれたブロック - エスケープが自動的に行われる場合と行われない場合

静的サイト ジェネレーターと Markdown で囲まれたブロック - エスケープが自動的に行われる場合と行われない場合。多くの Markdown パイプラインと静的サイト パイプラインは、フェンスで囲まれたコードを自動的にエスケープします。その段階の前に事前エスケープすると、可視の &lt; が作成されるため、単一のエスケープ境界の所有権を文書化する必要があります。

顧客資料の代わりに無害な入力を使用して、静的サイト ジェネレーターを再現します。マークダウンで囲まれたブロックを記録し、エスケープが自動的に行われることを観察し、意図的なコードサンプルのレンダリング パスをすべてカウントします。 Web ページ トレイルに HTML コードを表示することで、コード サンプルをライブ ボタンとしてレンダリングするテクニカル ライターが、推測することなく、コード サンプル レンダリングの証拠がそうでない部分を評価し、コード サンプル レンダリングの証拠を得ることができます。

よくある間違い — Markdown パイプラインで 2 回エスケープし、サンプル内の URL で & を忘れる

よくある間違い - Markdown パイプラインで 2 回エスケープし、サンプル内の URL で & を忘れます。サンプル内に表示される URL には、同様に変換が必要なアンパサンドが含まれています。スニペット全体を一度実行すると、手動で山かっこを変更したり、他の場所でアンパサンドを見落としたりするより安全です。

コード サンプルのレンダリング レビュー中に、マークダウン パイプラインで 2 回エスケープし、URL を忘れるというよくある間違いを並べて配置します。コード サンプルをライブ ボタンとしてレンダリングするテクニカル ライターは、サンプルの内部が変換時またはダウンストリームで変更されたかどうかを判断できます。 Web ページ上の HTML コードの表示は、コード サンプル レンダリングの証拠に関する結論として、一般的なセキュリティ主張から除外してください。

これでカバーされないもの — 構文の強調表示ライブラリと行番号付け

これでカバーされないもの — ライブラリと行番号を強調表示する構文。構文ハイライターと行番号コンポーネントは、この操作の対象外です。エスケープ後にコードをトークン化することはできますが、独自の DOM 構築と信頼モデルを個別にレビューする必要があります。

コードサンプルのレンダリングを実行する前に、これが実行しないことを定義します。カバー構文ハイライト ライブラリをコントロールとして保存し、背後にあるコード ポイントと行番号を検査し、コード サンプル レンダリングの証拠を次のインタープリタにマップします。これにより、Web ページ上の表示 HTML コードを調査するライブ ボタンとしてコード サンプルをレンダリングするテクニカル ライターは、コード サンプル レンダリングの証拠を監査できるようになります。

要点: 任意の挿入ポイントではなく、HTML テキスト コンテナーのエスケープ スニペット

要点: 任意の挿入ポイントではなく、HTML テキスト コンテナーのスニペットをエスケープします。このツールは、任意の挿入ポイントではなく、HTML プレ要素またはコード要素のソース テキストを作成するために使用します。結果は依然としてコンテキスト固有の HTML テキストであり、普遍的な安全な文字列ではありません。

テイクアウトのエスケープ スニペットを、観察可能なコード サンプル レンダリング出力に接続します。 HTML テキスト コンテナを 1 パス結果の横に置かないで、任意の挿入ポイントがコード サンプル レンダリングの証拠に入る場所を確認します。コード サンプルをライブ ボタンとしてレンダリングするテクニカル ライターは、Web ページ検索でコード サンプル レンダリングの証拠をナロー ディスプレイ HTML コードとしてレビューできるようになりました。この記事の背後にある実際的な決定は具体的です。<pre> ブロックはパーサーによるタグの読み取りを停止しないため、コード サンプルはエスケープする必要があります。この投稿では、どの文字を変換するか、サンプル内の </script> がどのようにしてスクリプトを終了するか、サンプルを読み取り可能に保つ方法を正確に示します。リーダーのアクションも同様に具体的です。HTML エンティティ エスケープ機能にリンクし、<pre> ブロック内で使用する複数行の HTML スニペットをエスケープする方法を示します。