Je suis en train de définir les variables de largeur <WIDTH>
et <WIDTH1>
au sein XSL que je retriveing du web.config dans les C# comme ci-dessous:Réglage des paramètres de substitution XSL dans C# Code
string Width1 = System.Configuration.ConfigurationSettings.AppSettings.Get("Width1");
string Width2 = System.Configuration.ConfigurationSettings.AppSettings.Get("Width2");
[email protected]"<?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);
Mais la Le code HTML n'est pas généré et une erreur est renvoyée concernant la balise de table qui n'est pas fermée.
Je sais que la balise de table doit aller à l'intérieur de chaque balise xsl: when et xsl: sinon je veux éviter cela.
Mon problème est qu'il y a beaucoup de code XSL entre les tags et je veux éviter la duplication de code! Y a-t-il un autre moyen d'y parvenir?
Merci beaucoup,
Notez que même cela est mal formé - voir xsl: when construction –
Oui, je l'avais recopié son en ligne, fixé maintenant, Merci. –
La façon de résoudre le problème consiste à utiliser des paramètres. Si vous utilisez XSLT - je serais beaucoup plus heureux avec le XSLT dans son propre fichier (Visual Studio vous permet de déboguer les transformations XSLT de XML). – Murph