IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[XSL] Comment ne pas réstituer un élément vide ?


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Médiamaticien
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Médiamaticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut [XSL] Comment ne pas réstituer un élément vide ?
    Bonjour,

    Je suis débutant en XSL et je dois créer des feuilles de style pour transformer des documents XML en XML_EAD. Suite à de nombreuses recherches je n'ai rien trouvé alors je me lance .

    Je pars sur un modèle qui comporte tout les champs qu'il est possible d'avoir dans notre base de donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?xml version="1.0" encoding="utf-8"?>
    <!-- Cette feuille de style s'applique uniquement aux dossiers -->
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="Record" name="ShowRecDossier1">
     
    		<unitid>
    			<xsl:value-of select="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"/>
    		<lb />
    			<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    		</unitid>
     
    		<unittitle>
    			<xsl:value-of select="DetailData/DataElement[@ElementId=1]/ElementValue/TextValue"/>
    		</unittitle>
     
    		<unitdate>
    			<xsl:attribute name="normal">
    				<xsl:value-of select="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation"/>
    			</xsl:attribute>
    				<lb />
    			<xsl:value-of select="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue"/>
    		</unitdate>
     
    		<physdesc>
    			<physfacet type="Support"> 
    				<xsl:value-of select="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue"/>
    			</physfacet>			
    			<genreform type="Type de documents d'archives">
    				<xsl:value-of select="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue"/>
    			</genreform>			
    			<extent>
    				<xsl:value-of select="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue"/>
    			</extent>
    			<dimensions type="hauteur x largeur" unit="centimètre"><xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/></dimensions>
    		</physdesc>
     
    		<physloc>	
    			<xsl:value-of select="DetailData/DataElement[@ElementId=10117]/ElementValue/TextValue"/>
    		</physloc>	
     
    	</xsl:template>
    </xsl:stylesheet>
    Et j'obtient le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <unitid>CH AEV, 1 DM, 1  <lb/>
    </unitid>
    <unittitle>Législation, messages et rapports sur l'organisation militaire</unittitle>
    <unitdate normal="1802-1836">
    <lb/>
    </unitdate>
    <physdesc>
    <physfacet type="Support"/>
    <genreform type="Type de documents d'archives"/>
    <extent/>
    <dimensions type="hauteur x largeur" unit="centimètre"/>
    </physdesc>
    <physloc/>
    Il faudrait que j'obtienne le même résultat mais en supprimant les balises qui ne contiennent rien et remplacer les espace et les virgules de l'identifiant de l'unité documentaire (<unitid>). Comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <unitid>CH_AEV-1_DM-1</unitid>
    <unittitle>Législation, messages et rapports sur l'organisation militaire</unittitle>
    <unitdate normal="1802-1836"></unitdate>
    Comment puis-je le faire ? (Ou bien connaissez-vous des sites qui expliques cela que j'aurais malheureusement ratés durant ma recherche ?)


    Merci d'avance pour vos réponse,
    Renaud

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Si t'as la possibilité de passer en XSL 2.0, tu peux facilement remplacer les virgules et espaces de ton unitid en utilisant la fonction replace(string,pattern,replace).
    Si tu dois rester en XSL 1.0, tu peux faire un template récursif pour faire le traitement avec des substring-before(string1,string2) et substring-after(string1,string2).

    Pour ce qui est de ne pas afficher les balises si le contenu est vide, tu n'as pas 36 possibilités : tu dois tester pour chaque balise si son contenu sera vide ou non avec des xsl:if.

  3. #3
    Membre averti
    Homme Profil pro
    Médiamaticien
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Médiamaticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    Citation Envoyé par Loceka Voir le message
    Si t'as la possibilité de passer en XSL 2.0, tu peux facilement remplacer les virgules et espaces de ton unitid en utilisant la fonction replace(string,pattern,replace).
    Si tu dois rester en XSL 1.0, tu peux faire un template récursif pour faire le traitement avec des substring-before(string1,string2) et substring-after(string1,string2).
    Hello, tout d'abord merci pour ta réponse.
    Pour te répondre oui je suis obliger de rester en XSL 1.0. Pourrais-tu m'indiquer ce qu'est un template récursif stp ? (Et oui je suis un débutant) Ou alors un lien ou je pourrais me renseigner car je nage là ...


    Citation Envoyé par Loceka Voir le message
    Pour ce qui est de ne pas afficher les balises si le contenu est vide, tu n'as pas 36 possibilités : tu dois tester pour chaque balise si son contenu sera vide ou non avec des xsl:if.
    Pour cela je suis arrivé à obtenir ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <unitid>CH AEV, 1 DM, 1<lb /></unitid>
    <unittitle>Législation, messages et rapports sur l'organisation militaire</unittitle>
    <unitdate normal="1802-1836">                <lb /></unitdate>
    Avec ce code-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="Record" name="ShowRecDossier1">
     
     
     
    	<xsl:if test="//Record/DetailData/DataElement[@ElementId=2]/ElementValue/TextValue">
    		<unitid>
    			<xsl:if test="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"> 
    				<xsl:value-of select="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"/>
    			</xsl:if>
    		<lb />
    			<xsl:if test="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"> 
    				<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    			</xsl:if>	
    		</unitid>
    	</xsl:if>		
     
    	<xsl:if test="DetailData/DataElement[@ElementId=1]/ElementValue/TextValue">
    		<unittitle>
    			<xsl:value-of select="DetailData/DataElement[@ElementId=1]/ElementValue/TextValue"/>
    		</unittitle>
    	</xsl:if>
     
    		<unitdate>
    			<xsl:attribute name="normal">
    				<xsl:value-of select="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation"/>
    			</xsl:attribute>
    				<lb />
    			<xsl:value-of select="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue"/>
    		</unitdate>
     
    	<xsl:if test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue">	
    		<xsl:if test="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue">
    			<xsl:if test="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue">
    				<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    					<physdesc>
    						<xsl:if test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue">
    							<physfacet type="Support"> 
    								<xsl:value-of select="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue"/>
    							</physfacet>
    						</xsl:if>
     
    						<xsl:if test="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue">
    							<genreform type="Type de documents d'archives">
    								<xsl:value-of select="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue"/>
    							</genreform>
    						</xsl:if>
     
    						<xsl:if test="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue">
    							<extent>
    								<xsl:value-of select="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue"/>
    							</extent>
    						</xsl:if>
     
    						<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    							<dimensions type="hauteur x largeur" unit="centimètre">
    								<xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/>
    							</dimensions>
    						</xsl:if>
    					</physdesc>
    				</xsl:if>
    			</xsl:if>
    		</xsl:if>
    	</xsl:if>	
     
    		<xsl:if test="DetailData/DataElement[@ElementId=10117]/ElementValue/TextValue">
    			<physloc>
    				<xsl:value-of select="DetailData/DataElement[@ElementId=10117]/ElementValue/TextValue"/>
    			</physloc>
    		</xsl:if>
     
     
    	</xsl:template>
    </xsl:stylesheet>
    Est-ce correcte ou juste un coup de chance que le résultat soit celui (presque) souhaité ?

    Merci,
    Renaud

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Un template récursif est un template (utilisé comme une fonction) qui se rappelle lui-même jusqu'à ce que le traitement soit terminé.
    Ici par exemple, pour supprimer les virgules tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <xsl:template name="replace_comma">
    	<xsl:param name="from_string"/>
    	<xsl:param name="to_string" select="''"/>
     
    	<xsl:choose>
    		<xsl:when test="contains($from_string, ', ')">
    			<!-- cas où la chaîne restante contient ', ' -->
    			<xsl:call-template name="replace_comma">
    				<!-- la nouvelle chaîne restante est la partie après le ', ' -->
    				<xsl:with-param name="from_string" select="substring-after($from_string, ', ')"/>
    				<!-- la chaîne resultante est l'ancien résultat auquel on ajoute la partie d'avant le ', ' puis un '-' à la place -->
    				<xsl:with-param name="to_string" select="concat($to_string, substring-before($from_string, ', '), '-')"/>
    			</xsl:call-template>
    		</xsl:when>
    		<xsl:otherwise>
    			<!-- affichage du résultat -->
    			<xsl:value-of select="concat($to_string, $from_string)"/>
    		</xsl:otherwise>
    	</xsl:choose>
    </xsl:template>
    Pour l'appeller la première fois, il suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:call-template name="replace_comma">
    	<xsl:with-param name="from_string" select="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"/>
    </xsl:call-template>
    Pour remplacer les espaces et les virgules sans espaces derrière, tu peux utiliser la fonction translate. Il te suffit de mettre le résultat du call-template dans une variable (voir xsl:variable) puis d'appliquer la fonction translate sur cette variable : translate($string_wo_comma, ' ,', '_-').
    La fonction translate remplace chaque caractère du deuxième argument (ici « ' ,' ») par le caractère à la même position dans le troisième argument (ici « '_-' ») ou supprime le caractère s'il n'y a pas de caractère à la même position dans le 3ième argument.
    Dans le cas présent, elle remplace donc ' ' par '_' et ',' par '-'.

    Sinon pour ton code, le résultat est presque tel que souhaité parce que le code est presque bon.

    Voilà comment il faut écrire le test, pour chaque balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <xsl:if test="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue|DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    	<unitid>
    		<xsl:choose>
    			<xsl:when test="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue">
    				<xsl:value-of select="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"/>
    				<xsl:if test="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    					<lb />
    					<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    				</xsl:if>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:if test="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    					<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    				</xsl:if>
    			</xsl:otherwise>
    		</xsl:choose>
    	</unitid>
    </xsl:if>
    C'est très lourd mais je ne vois pas de façon de faire plus simplement (ce qui ne veut pas dire qu'il n'y en a pas).

  5. #5
    Membre averti
    Homme Profil pro
    Médiamaticien
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Médiamaticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    Merci pour cette réponse Je vais aller me chercher un bon café et essayer cela

  6. #6
    Membre averti
    Homme Profil pro
    Médiamaticien
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Médiamaticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    J'ai modifier ma feuille de style comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?xml version="1.0" encoding="utf-8"?>
    <!-- Cette feuille de style s'applique uniquement aux dossiers -->
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="Record" name="ShowRecDossier1">
     
    		<xsl:if test="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue|DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    			<unitid>
    				<xsl:choose>
    					<xsl:when test="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue">
    					<xsl:value-of select="DetailData/DataElement[@ElementId=2]/ElementValue/TextValue"/>
    						<xsl:if test="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    							<lb />
    							<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    						</xsl:if>
    					</xsl:when>
    					<xsl:otherwise>
    						<xsl:if test="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue">
    							<xsl:value-of select="DetailData/DataElement[@ElementId=18]/ElementValue/TextValue"/>
    						</xsl:if>
    					</xsl:otherwise>
    				</xsl:choose>
    			</unitid>
    		</xsl:if>
     
    		<xsl:if test="DetailData/DataElement[@ElementId=1]/ElementValue/TextValue">
    			<unittitle>
    				<xsl:value-of select="DetailData/DataElement[@ElementId=1]/ElementValue/TextValue"/>
    			</unittitle>
    		</xsl:if>
     
    		<xsl:if test="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation|DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue">
    			<unitdate>
    				<xsl:choose>
    					<xsl:when test="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation">
    					<xsl:attribute name="normal">
    						<xsl:value-of select="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation"/>
    					</xsl:attribute>
    					<xsl:value-of select="DetailData/DataElement[@ElementId=7]/ElementValue/DateRange/TextRepresentation"/>	
    						<xsl:if test="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue">
    							<lb />
    							<xsl:value-of select="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue"/>
    						</xsl:if>
    					</xsl:when>
    					<xsl:otherwise>
    						<xsl:if test="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue">
    							<xsl:value-of select="DetailData/DataElement[@ElementId=10068]/ElementValue/TextValue"/>
    						</xsl:if>
    					</xsl:otherwise>
    				</xsl:choose>	
    			</unitdate>
    		</xsl:if>		
     
     
    		<xsl:if test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue|DetailData/DataElement[@ElementId=17]/ElementValue/TextValue|DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue|DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    			<physdesc>
    				<xsl:choose>
    				<xsl:when test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue">
    					<physfacet type="Support"> 
    						<xsl:value-of select="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue"/>
    					</physfacet>
    						<xsl:if test="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue">
    							<genreform type="Type de documents d'archives">
    								<xsl:value-of select="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue"/>
    							</genreform>
    						</xsl:if>
    							<xsl:if test="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue">
    								<extent>
    									<xsl:value-of select="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue"/>
    								</extent>
    							</xsl:if>
    								<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    									<dimensions type="hauteur x largeur" unit="centimètre">
    										<xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/>
    									</dimensions>
    								</xsl:if>
    				</xsl:when>
    				<xsl:otherwise>
    					<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    						<xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/>
    					</xsl:if>
    				</xsl:otherwise>
    			</xsl:choose>				
    		</physdesc>
    		</xsl:if>
     
    		<xsl:if test="DetailData/DataElement[@ElementId=10117]/ElementValue/TextValue">
    			<physloc>
    				<xsl:value-of select="DetailData/DataElement[@ElementId=10117]/ElementValue/TextValue"/>
    			</physloc>
    		</xsl:if>
     
     
    	</xsl:template>
    </xsl:stylesheet>
    J'obtient d'orénavant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <unitid>CH AEV, 1 DM, 1</unitid>
    <unittitle>Législation, messages et rapports sur l'organisation militaire</unittitle>
    <unitdate normal="1802-1836">1802-1836</unitdate>
    Avant de me lancer sur le template récursif est-ce-que le passage cité ci-dessous est correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <xsl:if test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue|DetailData/DataElement[@ElementId=17]/ElementValue/TextValue|DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue|DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    			<physdesc>
    				<xsl:choose>
    				<xsl:when test="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue">
    					<physfacet type="Support"> 
    						<xsl:value-of select="DetailData/DataElement[@ElementId=10102]/ElementValue/TextValue"/>
    					</physfacet>
    						<xsl:if test="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue">
    							<genreform type="Type de documents d'archives">
    								<xsl:value-of select="DetailData/DataElement[@ElementId=17]/ElementValue/TextValue"/>
    							</genreform>
    						</xsl:if>
    							<xsl:if test="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue">
    								<extent>
    									<xsl:value-of select="DetailData/DataElement[@ElementId=10112]/ElementValue/TextValue"/>
    								</extent>
    							</xsl:if>
    								<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    									<dimensions type="hauteur x largeur" unit="centimètre">
    										<xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/>
    									</dimensions>
    								</xsl:if>
    				</xsl:when>
    				<xsl:otherwise>
    					<xsl:if test="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue">
    						<xsl:value-of select="DetailData/DataElement[@ElementId=10054]/ElementValue/TextValue"/>
    					</xsl:if>
    				</xsl:otherwise>
    			</xsl:choose>				
    		</physdesc>
    		</xsl:if>
    Merci,
    Renaud

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment ne pas afficher un champs vide dans un template
    Par altair8080 dans le forum AngularJS
    Réponses: 3
    Dernier message: 18/05/2015, 21h33
  2. [xml + xsl] détection d'élément vide
    Par tut dans le forum XSL/XSLT/XPATH
    Réponses: 20
    Dernier message: 11/05/2007, 10h44
  3. comment savoir si un dossier est vide ou pas?
    Par Amissan dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 16/02/2007, 13h31
  4. Réponses: 1
    Dernier message: 08/11/2005, 14h40
  5. [XSL]Comment faire ceci ?? Mon for-each n'affiche pas tout !
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/07/2005, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo