Я пытаюсь установить переменные ширины <WIDTH>
и <WIDTH1>
в XSL, которые я получаю из web.config в c #, как показано ниже:
string Width1 = System.Configuration.ConfigurationSettings.AppSettings.Get("Width1");
string Width2 = System.Configuration.ConfigurationSettings.AppSettings.Get("Width2");
cslx.Xslt=@"<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method='html'/>
<xsl:template match='/'>
<link rel='stylesheet' type='text/css' href='/StyleSheets/test.css'/>
<xsl:apply-templates select='/Data/Test/TestItems/TestItem'/>
</xsl:template>
<xsl:template match='TestItem'>
<xsl:when='boolean($Link1Items)or boolean($Link2Items) or boolean($Link3Items)'>
<table width='<WIDTH1>' class='tablestyle '>
</xsl:when>
<xsl:otherwise>
<table width='<WIDTH2>' class='tablestyle '>
</xsl:otherwise>
</table>
</xsl:template>
</xsl:stylesheet>
";
// update subsitution parameters
cslx.Xslt = cslx.Xslt.Replace("<WIDTH1>", Width1);
cslx.Xslt = cslx.Xslt.Replace("<WIDTH2>", Width2);
Но HTML не генерируется и выдается ошибка относительно тега таблицы, который не закрыт.
Я знаю, что тег table должен находиться внутри каждого тега xsl: when и xsl: else, но я хочу этого избежать.
Моя проблема в том, что между тегами много XSL-кода, и я хочу избежать дублирования кода! Есть ли другой способ, которым я могу достичь этого?
Большое спасибо,