c# - nys - certificate of title for a vehicle
Motor de plantilla C# (7)
¿Has mirado XSLT ? Tendrá que comenzar con su formato de datos fuente en XML, quizás al xmlserializar sus objetos de datos. ¡Puedes hacer loops y declaraciones con facilidad!
Kathleen Dollard tiene un libro sobre la generación de código a través de XSLT .
Personalmente, soy un gran fanático de T4 (especialmente al generar C #), pero es posible que, dado que XML y HTML son sus tipos de salida, XSLT lo cubra. Además, es muy multiplataforma.
Estoy buscando un código independiente, fácil de usar desde C #, motor de plantillas. Quiero crear archivos HTML y XML con marcadores de posición para datos y llenarlos con datos de mi código.
El motor necesita admitir bucles (duplicar partes de la plantilla para formar más de un objeto) y condiciones (agregar partes de la plantilla al HTML / XML final solo si algunas condiciones son ciertas). ¿Puede alguien recomendarme una buena opción y agregar un enlace a más o menos ejemplos de código y una documentación sobre cómo usar el componente recomendado para mis necesidades?
También necesito usar bucles para duplicar filas de tablas, o incluso tablas enteras (en la versión HTML) y elementos complejos (en la versión XML).
¿Qué pasa con T4, Text Template Transformation Toolkit ? Debe ajustarse a sus requisitos y está incorporado en Visual Studio.
Excelentes recursos de T4:
Es posible que necesite este .NET Template Engine .
Código de plantilla:
$Book.StaticId$
ID: $bk.BookId$ - Author: $bk.Author.Name$
Length of the author''s Name: $bk.Author.Name.Length$
C # Code:
class Author
{
public string Name
{
get
{
return "John Borders";
}
}
}
class Book
{
public static string StaticId
{
get
{
return "AABB";
}
}
public int BookId
{
get
{
return 100;
}
}
public Author Author
{
get
{
return new Author();
}
}
}
public class PropertySample1
{
[STAThread]
static void Main()
{
TemplateEngine dt = new TemplateEngine();
dt.LoadFromFile("Template.tpl");
Book book = new Book();
dt.SetValue("bk", book);
dt.UsingNamespace("CSharp,Demo");
string output = dt.Run();
Console.WriteLine(output);
}
}
La salida es:
AABB
ID: 100 - Author: John Borders
12
Hay un buen artículo sobre cómo usar el motor RazorView: Cómo crear un motor de plantillas de texto localizable usando RazorEngine
He usado StringTemplate con buenos resultados. Algunos recursos:
Tengo un motor de creación de plantillas incorporado en mi biblioteca de clase que se ve y funciona de forma similar al ASP de estilo antiguo, o T4 para el caso.
Básicamente, escribes el código C # en los bloques <%%> y, por lo tanto, puedes hacer la mayoría de las cosas que C # puede hacer, con la limitación de que todo el archivo de la plantilla se compila en un único método. En otras palabras, no puede definir clases de ayuda y tal dentro de la plantilla, pero para los métodos de ayuda puede hacer métodos anónimos.
Ejemplo:
<%
var firstname = "Bob";
var count = 10;
for (Int32 index = 0; index < count; index++)
{
%>
<%= firstname %> x <%= index+1 %>/<%= count %>
<%
}
%>
Esto se compilará a una clase C # en otro dominio de aplicación, y se puede ejecutar para devolver la cadena que contiene el texto producido.
También puede pasar un argumento a la plantilla y también hacer referencia a las bibliotecas de clases, lo que significa que puede pasar estructuras de datos personalizadas, o acceder a la capa de acceso a datos o código de lógica de negocios desde su plantilla.
Si desea verlo, el código está disponible en mi biblioteca de clase desde mi repositorio o página web de Subversion:
- Repositorio de Subversion del código fuente
- El repositorio de binarios de Subversion contiene el último código fuente revisado que crea y pasa las pruebas unitarias
Para los repositorios de subversión necesita un nombre de usuario y contraseña, ambos son "invitados", sin las comillas.
El código está en el proyecto / ensamblaje LVK.Text.Templating.
Además, avíseme (consulte el correo electrónico en la página de perfil o deje un comentario) y le brindaré algunos ejemplos más.
SmartFormat es una biblioteca bastante simple que cumple con todos sus requisitos. Está enfocado en componer texto en "lenguaje natural" y es ideal para generar datos a partir de listas o aplicar lógica condicional.
La sintaxis es muy similar a String.Format
, y es muy simple y fácil de aprender y usar. Aquí hay un ejemplo de la sintaxis de la documentación:
Smart.Format("{Name}''s friends: {Friends:{Name}|, |, and}", user)
// Result: "Scott''s friends: Michael, Jim, Pam, and Dwight"
La biblioteca es de código abierto y fácilmente extensible, por lo que también puede mejorarla con funciones adicionales.