Question

J'aimerais générer les contrôles HTML à l'aide de xslt, mais je dois pouvoir nommer les contrôles pour pouvoir les obtenir lorsque le formulaire sera renvoyé.

J'aimerais pouvoir nommer le bouton radio "action_". + _case_id .

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
  <Cases>
    <Case>
      <case_id>30</case_id>
    </Case>
  <Cases>
</NewDataSet>

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
     <div class="your_action">
      Your action:<br />
      <input type="radio" name="?" value="No" checked ="true"/> nothing to report<br />
      <input type="radio" name="?" value="Yes" /> memo to follow
    </div>
  </xsl:template>
</xsl:stylesheet>
Était-ce utile?

La solution

Utiliser:

<input type="radio" name="{concat('action_', /*/*/*/case_id)}"
 value="No" checked ="true"/>

Si votre document XML change, il peut être nécessaire de remplacer "& *;" " caractères ci-dessus avec des étapes de localisation plus détaillées.

Autres conseils

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
  <Cases>
    <Case>
      <case_id>30</case_id>
    </Case>
  <Cases>
</NewDataSet>

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
     <xsl:variable name="actionid">action_<xsl:value-of select="Cases/Case/case_id"/></xsl:variable>
     <div class="your_action">
      Your action:<br />
      <input type="radio" name="{actionid}" value="No" checked ="true"/> nothing to report<br />
      <input type="radio" name="{actionid}" value="Yes" /> memo to follow
    </div>
  </xsl:template>
</xsl:stylesheet>

REMARQUE: non testé. Vous voudrez probablement ajouter un matcher spécialement pour le nœud Case, et pas uniquement pour le nœud racine.

Vous devez préfixer la variable avec un signe $ lors de son référencement:

<input type="radio" name="{$actionid}" value="No" checked ="true"/> nothing to report<br />

Votre ensemble de données a la propriété intéressante d'être un arbre, chaque nœud peut être identifié par son chemin dans l'arbre. Je dirais que votre meilleur choix est de nommer les contrôles correspondant à chaque nœud XML de manière à refléter ceci:

  1. NewDataSet_Cases_Case1_case_id1_rb.
  2. NewDataSet_Cases_Case1_case_id2_rb.

Vous avez juste besoin d’un moyen d’obtenir les noms des noeuds parents, comme par exemple:

&lt;xsl:variable name="parent1Name"
              select="name(parent::*)" /&gt;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top