Es gibt Seiten, die haben alle Daten dabei.
Oder ein Server bzw. Webservice eines Dritten,
stellt die Daten zur Verfügung.
Dann könnte eine HTML-Datei reichen,
um per
- TypeScript/JavaScript HTML CSS
die Daten zu nutzen.

--> http://kantn.jobst-software.net:8080/aussendienst4/stempelkarte4.html
HTML kann einfach sein (<h3>Überschrift</h3> <p>Text</p> <h3>...</h3> <p>...)
und samt
- CSS
- JavaScript
- ohne Zusatzsoftware
anzeig- und druckbar per Browser.
( z.B. kann man mit einer HTML-Datei eine kleine App umsetzen )
HTML funktioniert mit
- HTTP-Servern
- Dateiservern
- SQL (die den Datentyp XML kennt)
- ...
und kann vom jeweiligen Berechtigungssystem profitieren.
HTML kann man auch so gestalten, dass es maschinenlesbar (XML) ist.
- 1 - (TxtDoc-html-ohne-web-server2026-05-27.html)
z.B. für eine Datenquellen,
für die man eine URL hat
und man als Tabelle anzeigen möchte.
( Cross-Origin ist hier zu beachten )
z.B. "Tabelle"
--> http://kantn.jobst-software.net:8080/aussendienst4/preferences.html

man kann mit wenig HTML / TypeScript/JavaScript auskommen,
wenn Cross-Origin und Authentifizierung bereits gelöst sind.
<html>
<head>
<title>Einstellungen - Tabelle</title>
<style>
td {
border: solid 1px darkGray; min-width: 2rem; padding: 0.2rem;
}
</style>
<script type="module" >
"use strict";
window.addEventListener( "load", function() {
const select_url = getEinstellungen_Tabelle_Select_url();
fetch( select_url, { credentials: 'include' })
.then( (response) => response.text() )
.then( (text) => {
const table_ele = document.getElementById("d-print-table");
const json_doc = JSON.parse( text);
fill_table( document, table_ele, json_doc);
})
.catch( function( exc) {
alert( "fetch failed (" + exc + ")");
});
});
function fill_table( html_doc, table_ele, json_doc) {
const tag_names = [ "th", "td" ];
for( let tag_name_i=0; tag_name_i < tag_names.length; tag_name_i++ ) {
let tag_name = tag_names[ tag_name_i];
let trs = json_doc;
for( let tr_i=0; tr_i < ( tag_name == "th" && trs.length >= 1 ? 1 : trs.length ); tr_i++ ) {
let tr = trs[ tr_i];
let tr_ele = html_doc.createElement( "tr");
table_ele.appendChild( tr_ele);
let tds = tr;
Object.entries( tds).forEach( ( [fdName, fdValue]) => {
let td_ele = html_doc.createElement( tag_name);
tr_ele.appendChild( td_ele);
td_ele.innerText = ( tag_name == "th" ? fdName : fdValue );
});
}
}
}
function getEinstellungen_Tabelle_Select_url() {
const select = getEinstellungen_Tabelle_Select();
const select_sql = select[ "sql"];
const json_parameters = JSON.stringify( select[ "param"]);
const select_url = "/MywebDb3Servlet" + "?sql=" + encodeURIComponent( select_sql) + "¶meters=" + encodeURIComponent( json_parameters);
return select_url;
}
function getEinstellungen_Tabelle_Select() {
const select_sql = "select _id, PREFERENCE_KEY, PREFERENCE_VALUE from Preferences order by _id";
return { sql: select_sql, param: [] };
}
</script>
</head>
<body>
<h1>Einstellungen - Tabelle</h1>
<table id="d-print-table" >
</table>
</body>
</html>
- 2 - (TxtDoc-html-ohne-web-server2026-05-27.html)