Unione di dati creati dinamicamente con un modello HTML

2

Ho un'applicazione C # in cui mi piacerebbe presentare le informazioni accumulate in memoria da un sistema incorporato sotto forma di una pagina HTML in un modo quasi in tempo reale. Come prova del concetto ho implementato un HttpListener all'interno dell'applicazione e che funziona bene per servire i dati ma al momento per i test ho codificato in modo hard una semplice tabella HTML all'interno del codice.

Quello che mi piacerebbe fare invece è servire il contenuto basato sull'unione dei dati con un modello HTML che può essere modificato dall'utente finale. Per dare un esempio, le colonne sarebbero qualcosa di abbastanza semplice come la seguente:

Race: 1
Position     Rider           Horse         Time
   1         Jon Skeet       Fast runner   1:20:10
   2         Joe Bloggs      Not so fast   1:25:20
   ...
   10        PeterJ          Bit slow      2:30:01

Potrei venire con il mio schema come il seguente:

<h1>Race: {f:RaceNum}</h1>
{MaxRows=10}
<table>
    <tr><td>{r:Position}</td><td>{r:Rider}</td><td>{r:Horse}</td><td>{r:Time}</td></tr>
</table>

Quale funzionerebbe bene ma mi ha colpito forse sto reinventando la ruota e c'è un modo più standard ed estensibile per accedervi?

    
posta PeterJ 10.04.2016 - 14:04
fonte

1 risposta

2

Potresti prendere in considerazione l'utilizzo di XSL per questo. Chiedi al tuo programma di raccogliere dati in un documento XML e trasformarlo in HTML con XSL. È una struttura piuttosto semplice

<xml>
    <race nbr='1'>
        <racer name='Jon Skeet' horse='Fast Runner' time='1:20'/>
        <racer name='Joe Blogs' horse='Not So Fast' time='1:25'/>
    </race>
    <race nbr='2'>
        <racer name='Jackie Redmond' horse='Ford Prefect' time='1:20'/>
        <racer name='Evanka Osmak' horse='Heart of Gold' time='1:25'/>
    </race>
</xml>

All'interno del tuo XSL, avresti un elenco di variabili che includono l'elenco di piloti, numero di gara, ecc.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes"/>

<xsl:variable name='race' select='/xml/race'/>

<xsl:template match='/'>
    <xsl:for-each select='$race'>
        <h1>Race <xsl:value-of select='@nbr'/></h1>
        <table>
            <tr>
                <th>Name</th>
                <th>Horse</th>
                <th>Time</th>
            </tr>
            <xsl:for-each select='racer'>
            <tr>
                <td><xsl:value-of select='@name'/></td>
                <td><xsl:value-of select='@horse'/></td>
                <td><xsl:value-of select='@time'/></td>
            </tr>
            </xsl:for-each>
        </table>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Fornisci 1 o 2 copie dell'XSL come campioni per vari stili di formattazione e consenti ai tuoi utenti finali di fornire la propria trasformazione XSL.

    
risposta data 10.04.2016 - 21:43
fonte

Leggi altre domande sui tag