2010-06-01 5 views
0

J'ai un exemple de fichier XML en tant que;
Comment affecter des valeurs d'attribut XML à la liste déroulante à l'aide de XSL

<?xml version="1.0" encoding="iso-8859-9"?> 
    <DropDownControl id="dd1" name="ShowValues" choices="choice1,choice2,choice3,choice4"> 
</DropDownControl > 


Je dois créer une représentation de l'interface utilisateur de ce XML en utilisant XSL. Je veux remplir la liste déroulante avec les valeurs spécifiées dans l'attribut choice.
Quelqu'un a-t-il une idée à ce sujet?
Merci d'avance :)

Répondre

0

Si vous avez une recherche de StackOverflow, vous devriez trouver il y a beaucoup de questions relatives à la division des ficelles.

Voici un, par exemple:

Comma Separated String Parsing

Dans votre cas, voici comment vous l'utiliser

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/DropDownControl"> 
     <select> 
     <xsl:call-template name="split"> 
      <xsl:with-param name="list" select="@choices"/> 
     </xsl:call-template> 
     </select> 
    </xsl:template> 

    <xsl:template name="split"> 
     <xsl:param name="list" select="''"/> 
     <xsl:param name="separator" select="','"/> 
     <xsl:if test="not($list = '' or $separator = '')"> 
     <xsl:variable name="head" select="substring-before(concat($list, $separator), $separator)"/> 
     <xsl:variable name="tail" select="substring-after($list, $separator)"/> 
     <option> 
      <xsl:value-of select="$head"/> 
     </option> 
     <xsl:call-template name="split"> 
      <xsl:with-param name="list" select="$tail"/> 
      <xsl:with-param name="separator" select="$separator"/> 
     </xsl:call-template> 
     </xsl:if> 
    </xsl:template> 

</xsl:stylesheet> 

Cela produit le XML suivant/HTML

<select> 
<option>choice1</option> 
<option>choice2</option> 
<option>choice3</option> 
<option>choice4</option> 
</select> 

Si vous pouviez utiliser XSLT2.0, vous pourriez utiliser la fonction tokenise tion. Voir cette page pour un exemple

Best way to split and render comma separated text as html

Cependant, je remarque que vous le asp.net de tagué question et C# 2.0 suggère que vous ne serez pas en mesure d'utiliser directement XSLT2.0.

Un autre exemple, étant donné que la transformation est en cours en utilisant C#, est que vous faites le fractionnement dans le code derrière, avant la transformation est terminée. Écrivez du code pour lire le XML, accédez à l'attribut, utilisez la fonction de séparation de chaînes de .Net et ajoutez des éléments enfants à l'élément DropDownControl.

+0

Thanx Tim :) Cela a fonctionné pour moi. –

Questions connexes