Обычно для этого необходимо предоставить параметры для преобразования во время выполнения и записать преобразование, чтобы его поведение контролировалось параметрами.
Обычно, когда я делаю это, я передаю только один параметр - документ XML - и заставляю шаблоны запрашивать его, чтобы определить, что они должны делать. Итак, вы увидите такие вещи, как:
<xsl:template match="*">
<xsl:variable name="cfg" select="$config/*[name() = current()]"/>
<xsl:choose>
<xsl:when test="cfg/elementType = 'option'">
<xsl:apply-templates select="." mode="option">
<xsl:when test="cfg/elementType = 'optgroup'">
<xsl:apply-templates select="." mode="optgroup">
<xsl:when test="cfg/elementType = 'a'">
<xsl:apply-templates select="." mode="a">
и т. Д.
Очень просто динамически передавать элемент управления WebBrowser с помощью XML / XSLT:
using (XmlWriter xw = XmlWriter.Create(new StringWriter(output)))
{
StringBuilder output = new StringBuilder();
XsltArgumentList args = new XsltArgumentList();
args.AddParam("config", myConfigXml);
myXslt.Transform(myXml, args, xw);
xw.Flush();
myWebBrowser.DocumentText = output.ToString();
}
Если пользовательский интерфейс, который обновляет пользователь, находится в самом WebBrowser (то есть HTML-страница содержит элементы управления пользовательского интерфейса HTML), вы должны использовать динамические методы HTML, так же, как если бы страница отображалась в нормальный браузер. Это совсем другой пакет бананов.