HTML()
HTML() シンクは、テンプレート言語を使用して結果をHTML文書または要素として出力します。
クエリ結果に合わせて、HTMLの構造と表示を自由に構成できます。
構文: HTML(templates...)
Since v8.0.53
templates:1つ以上のテンプレート文字列、またはfile(path)参照です。各引数にテンプレート文字列を直接記述するか、file(path)で外部ファイルを読み込めます。テンプレートにはGoのHTMLテンプレート言語を使用します。詳しい構文は templateの文書を参照してください。cache():結果データをキャッシュします。詳細は結果データのキャッシュを参照してください。
テンプレート内では、現在のレコードのフィールド値や行番号にアクセスする値オブジェクトを使用できます。
HTMLテンプレートのコンテキストで使用できるフィールドとプロパティを以下に示します。
メソッド
{{ .Columns }}{{ .Column <idx>}}{{ .Values }}{{ .Value <idx> }}{{ .ValueHTMLAttr <idx> }}{{ .ValueCSS <idx> }}{{ .ValueJS <idx> }}{{ .ValueURL <idx> }}{{ .ValueString <idx> }}{{ .V.<field> }}{{ .Num }}
関数
timeformat
構文
{{ timeformat <format> <timezone> }}使用例
| |
<li>2025-05-29T08:32:33Z
<li>Hello Worldformat
使用例
| |
<li> 3.14
<li> Say: Hello World?param
| |
?param=Lineパラメーターを付けてTQLスクリプトを呼び出してください。
<li> Line 3.1415
<li> Line Hello WorldparamDefault
| |
<li> Line1 3.1415
<li> Line2 Hello WorldtoLower
| |
<li> 3.14
<li> Say: hello world?toUpper
| |
<li> 3.14
<li> Say: HELLO WORLD?使用例
.V は、フィールド名をキーとするマップオブジェクトです。
| |

コンテキスト
テンプレートは、HTML、CSS、JavaScript、URIのコンテキストを認識します。
各パイプラインにエスケープ関数が自動で適用され、安全に描画されます。
たとえば、{{.Value 0}}、{{.Value 1}}、{{.Value 2}} は、それぞれのコンテキストに応じたエスケープ関数を適用する形式に変換されます。
| |
- 出力:
<li>
<a href="http://maven.org/">
<img src="https://docs.machbase.com/images/java_logo_32.png">Java
</a>
</li>
<li>
<a href="http://npmjs.com/">
<img src="https://docs.machbase.com/images/js_logo_32.png">JavaScript
</a>
</li>{{.Value 0}} の値が O'Reilly: How are <i>you</i>? の場合、以下の例のように各コンテキストで表現されます。
| |
| |
| |
SCRIPT({ $.yield(`Hello World?`, `function doMsg(msg){ console.log(msg); }`) })
HTML({
<script>
{{.ValueJS 1}}
</script>
<a onClick='doMsg("{{.Value 0}}")'>here</a>
})
// 出力:
// <script>
// function doMsg(msg){ console.log(msg); }
// </script>
// <a onClick='doMsg("Hello World?")'>here</a>文字列以外の値もJavaScriptコンテキストで使用できます。
レコードがオブジェクトの場合、次のように出力されます。
| |
出力結果は次のとおりです。
<script>var pair = {"A":"foo","B":"bar"};</script>エスケープしない文字列
既定では、すべてのパイプラインが通常のテキスト文字列を生成するとみなし、適切なコンテキストに応じてエスケープ処理を自動的に追加します。
データが通常のテキストでない場合は、型を指定して重複したエスケープを防げます。
HTML、JS、URLなどの型は安全なコンテンツとして扱われ、エスケープの対象外になります。
次のテンプレートを実行すると:
| |
結果は次のとおりです。
Hello, <b>World</b>!自動エスケープを適用すると、次のように出力されます。
Hello, <b>World<b>!