/ / XSL si la colonne X est le caractère X, est-ce que ceci est fait - xslt

XSL si la colonne X est le caractère X, est-ce que ceci est fait autrement - xslt

-XSL Version 1.0 -

J'ai un fichier XSL créé par quelqu'uncela ne fonctionne plus dans mon entreprise et nous devons bien sûr changer le XSL. Je n’ai jamais utilisé XSL, mais j’ai fait quelques recherches et je pense pouvoir réaliser la fonction requise en mettant à jour le XSL avec une fonction de sélection.

-Problème- Nous avons un domaine qui a changé d'un leadernombre de caractères de 13 à 11, mais nous devons capturer les deux pour une période de temps. Il a été décidé de couper les deux personnages principaux de l'année. Les valeurs resteront constantes jusqu'à la barre oblique "/" à 13 ou 11 caractères. Les caractères suivants peuvent varier de 5 à 13 caractères.

  • 13 caractères CTM08G2012001 / 0001
  • 11 caractères CTM08G12001 / 0001

Je veux vérifier si le 12ème caractère est un "/" et s'il utilise les 11 premiers caractères et si ce n'est pas le cas, utilisez les 13 premiers caractères. Voici le code pour la fonction.

  1. Où devrais-je placer le choix / sinon fonction? Il semble y en avoir plusieurs qui se répètent et cela me perturbe.
  2. Comment capturer le "/" dans la chaîne spécifique?

Je vais continuer à faire des recherches et à m'excuser de ne pas avoir fait une liste de choses à essayer car je ne sais même pas par où commencer.

<func:function name="func:getProjClaimNo">
<xsl:param name="Proj" />
<xsl:param name="Claim" />

<xsl:variable name="isNUMB"       select=""1234567890""/>
<xsl:variable name="vProj1"        select="substring($Proj, 8, 1)"/>
<xsl:variable name="vProj2"        select="substring($Proj, 9, 1)"/>

<xsl:choose>  <!-- 1 -->
<xsl:when test="contains($isNUMB,$vProj1)">                                                  <!-- 1 -->
<xsl:choose>                                                                        <!-- 2 -->
<xsl:when test="contains($isNUMB,$vProj2)">                                         <!-- 2 -->
<xsl:variable name="vProj3"        select="number(substring($Proj, 8, 2))"/>
<xsl:choose>                                                                <!-- 3 -->
<xsl:when test="$vProj3 &gt; 8">                                            <!-- 3 -->
<func:result select="$Proj"/>
</xsl:when>                                                         <!-- 3 -->
<xsl:otherwise>                                                     <!-- 3 -->
<!-- May need to check to see if claim number is empty or if proj in table -->
<xsl:choose>
<!-- 4 -->
<xsl:when test="$Claim=""">                                     <!-- 4 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:when>                                                 <!-- 4 -->
<xsl:otherwise>                                             <!-- 4 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:otherwise>                                                <!-- 4 -->
</xsl:choose>                                                       <!-- 4 -->
</xsl:otherwise>                                                        <!-- 3 -->
</xsl:choose>                                                               <!-- 3 -->
</xsl:when>                                                                 <!-- 2 -->
<xsl:otherwise>                                                             <!-- 2 -->
<!-- May need to check to see if claim number is empty -->
<xsl:choose>                                                                <!-- 5 -->
<xsl:when test="$Claim=""">                                             <!-- 5 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:when>                                                         <!-- 5 -->
<xsl:otherwise>                                                     <!-- 5 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:otherwise>                                                        <!-- 5 -->
</xsl:choose>                                                               <!-- 5 -->
</xsl:otherwise>                                                                <!-- 2 -->
</xsl:choose>                                                                       <!-- 2 -->
</xsl:when>                                                                          <!-- 1 -->
<xsl:otherwise>                                                                      <!-- 1 -->
<!-- May need to check to see if claim number is empty -->
<xsl:choose>                                                                        <!-- 6 -->
<xsl:when test="$Claim=""">                                                     <!-- 6 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:when>                                                                 <!-- 6 -->
<xsl:otherwise>                                                             <!-- 6 -->
<func:result select="substring($Claim, 1, 13)"/>
</xsl:otherwise>                                                                <!-- 6 -->
</xsl:choose>                                                                       <!-- 6 -->
</xsl:otherwise>                                                                     <!-- 1 -->
</xsl:choose>                                                                             <!-- 1 -->
</func:function>

Réponses:

0 pour la réponse № 1

Je ne vois pas où se trouve ce "champ" dans l'extrait de votre feuille de style. En général, vous pouvez faire quelque chose comme ceci:

<xsl:choose>
<xsl:when test="substring($yourfield, 12, 1) ="/"">
<xsl:value-of select="substring($yourfield, 1, 11)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($yourfield, 1, 13)"/>
</xsl:otherwise>
</xsl:choose>

ou, plus succinctement:

<xsl:value-of select="substring($yourfield, 1, 13-2*(substring($yourfield, 12, 1) ="/"))"/>

Cependant, si je comprends bien, cela pourrait être beaucoup plus simple:

<xsl:value-of select="substring-before($yourfield, "/")"/>