Sto creando un framework per la creazione di semplici siti Web html per un sistema embedded e voglio renderlo a prova di proiettile in modo che un utente non possa commettere errori nella creazione del documento html. Come ho imparato, è difficile creare e mantenere un markup html all'interno del codice c ++. In un framework che ho trovato (solo uno che ho trovato) è possibile aggiungere qualsiasi tag e aggiungere qualsiasi attributo a un nodo. Voglio controllarlo. Per fare ciò ho bisogno di avere un sacco di dati che ho raccolto da w3schools.com. Il mio prossimo passo sarebbe inserire i dati nel codice.
Per spiegare brevemente:
- Ho un elenco di tag consentiti
- Ogni tag supporta un elenco di attributi globali
- Ogni tag supporta un elenco di attributi evento
- Alcuni tag hanno attributi specifici del tag
- Ogni attributo ha un elenco di valori consentiti
Il problema che sto avendo è come connettere correttamente queste liste. Potrei mettere tutto in enums
, ma ciò vanificherebbe lo scopo di questo framework. Potrei anche avere una classe per ciascuno dei tag, ma risulterebbe in un sacco di codice ridondante.
Il risultato finale che desidero avere:
//tag temp(tag.type);
// OR
//tag.type temp;
tag.a temp;
//temp.addAttribute(attribute.type.value)
temp.addAttribute(att.href("http://www.w3schools.com"));
temp.addAttribute(att.target.blank);
temp.addAttribute(att.onclick("alert('You are goint away :(')"));
temp.value("Visit W3Schools!");
temp.ToString()
//document.addNode(temp);
//this will produce the following tag
//<a href="http://www.w3schools.com" target="_blank" onclick="alert('You are goint away :(')">Visit W3Schools!</a>
Qualche idea su come strutturare i dati per raggiungere questo o qualcosa di simile?