Как большой поклонник XSL, я очень рад использовать xsl в качестве представления в нашей проприетарной инфраструктуре MVC на ASP.NET. Объекты в модели сериализуются под капотом с использованием сериализатора XML .NET, и мы используем совершенно атомарные шаблоны xsl, чтобы объявить, как должен преобразовываться каждый объект или свойство.
Например:
<xsl:template match="/Article">
<html>
<body>
<div class="article">
<xsl:apply-templates />
</div>
</body>
</html>
</xsl:template>
<xsl:template match="Article/Title">
<h1>
<xsl:apply-templates />
</h1>
</xsl:template>
<xsl:template match="@*|text()">
<xsl:copy />
</xsl:template>
Этот механизм позволяет нам быстро переопределить шаблоны сопоставления по умолчанию, например, сопоставление шаблона с последним элементом в списке или выбранным, и т. Д. Кроме того, объекты расширения xsl в .NET позволяют нам лишь немного дополнительной власти что нам нужно. Общие общие шаблоны могут быть разделены и включены.
Однако
Несмотря на то, что я могу игнорировать отрицательную сторону многословия xsl (поскольку intellisense + фрагменты схемы Visual Studio действительно хороши, хвала команде VS), недостатком отсутствия наличия intellisense над объектами строгого типа в модели действительно является то, что вызывает ошибки я.
Я видел пользовательские элементы управления ASP.NET MVC + в действии, и мне это действительно нравилось, но мне интересно;
Есть ли способ получить некоторый тип intellisense по XML, который мы перебираем, или вам известен язык, который предлагает свободу и декларативность XSL, но имеет преимущества strongtype / intellisense, например, webforms / usercontrols / asp.net.mvc ракурса?
(я, вероятно, знаю ответ: «нет», и я скоро обнаружу, что скоро использую совершенно крутое mvc shizzle Фила Хаака ...)