Bonjour,

Je sais pas si le titre est vraiment correct mais j'ai pas trouvé mieux Smiley sweatdrop

dans mon xslt j'aimerais pouvoir faire une sorte id qui soit unique donc je me disait que les numéroté par position étais une bonne idée.

Mais mon problème est que je n'y arrive pas trop et je ne vois pas comment le réaliser. Alors, j'aurais besoin d'un peu d'aide.

Mon xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:param name="Lang"/>
	<xsl:variable name="bisher">
		<xsl:choose>
			<xsl:when test="$Lang=1">[bisher: </xsl:when>
			<xsl:when test="$Lang=2">[précédement: </xsl:when>
			<xsl:otherwise>[finora: </xsl:otherwise>
		</xsl:choose>
	</xsl:variable>
	<xsl:variable name="apos">'</xsl:variable>
	<xsl:template match="/">
		<ListBisher>
			<xsl:apply-templates select="Extract"/>
		</ListBisher>
	</xsl:template>
	<xsl:template match="Extract">
		<xsl:apply-templates select="Bemerkungen/HRbem"/>
		<xsl:apply-templates select="Firma/Bez"/>
		<xsl:apply-templates select="HSangaben/HSangabe"/>
		<xsl:apply-templates select="KapitalStruktur/KapitalElement"/>
		<xsl:apply-templates select="Sitze/Sitz"/>
		<xsl:apply-templates select="Zwecke/Zweck"/>
		<xsl:apply-templates select="Zweigniederlassungen/Zweigniederlassung"/>
	</xsl:template>
	<xsl:template match="Bemerkungen/HRbem">
		<xsl:if test="@valid=1">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}">
				<xsl:value-of select="concat($bisher, .,']')"/>
				<ddl>
					<xsl:value-of select="$bisher"/>
					<xsl:choose>
						<xsl:when test="string-length(.)>80">
							<xsl:value-of select="substring(.,1,80)"/>...</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="."/>
						</xsl:otherwise>
					</xsl:choose>]</ddl>
			</Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Firma/Bez">
		<xsl:if test="@valid=1">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}">
				<xsl:value-of select="concat($bisher, .,']')"/>
			</Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="HSangaben/HSangabe">
		<xsl:if test="@valid=1">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}">
				<xsl:value-of select="concat($bisher, .,']')"/>
			</Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="KapitalStruktur/KapitalElement">
		<xsl:if test="@valid=1">
			<xsl:apply-templates select="Kapital"/>
			<xsl:if test="Liberierung">
				<xsl:apply-templates select="Liberierung"/>
			</xsl:if>
			<xsl:if test="Stueckelung">
				<Bisher Ein="{@Ein}" fldID="{Stueckelung/@fldID}"><xsl:value-of select="$bisher"/><xsl:apply-templates select="Stueckelung"/>]</Bisher>
			</xsl:if>
			<xsl:apply-templates select="Anteile"/>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Kapital">
		<xsl:if test="@valid=1">
			<Bisher Ein="{../@Ein}" fldID="{@fldID}"><xsl:value-of select="$bisher"/><xsl:value-of select="translate(format-number(., '###,###.00'), ',', $apos)"/>]</Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Liberierung">
		<xsl:if test="@valid=1">
			<Bisher Ein="{../@Ein}" fldID="{@fldID}"><xsl:value-of select="$bisher"/><xsl:value-of select="translate(format-number(., '###,###.00'), ',', $apos)"/>]</Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Stueckelung">
		<xsl:if test="@valid=1">
			<xsl:value-of select="."/><xsl:if test="position()!= last()">,<xsl:text> </xsl:text>
			</xsl:if>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Anteile">
		<xsl:if test="@valid=1">
			<Bisher Ein="{../@Ein}" fldID="{../@fldID}"><xsl:value-of select="concat($bisher, .,']')"/></Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Sitze/Sitz">
		<xsl:if test="@valid='1'">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}"><xsl:value-of select="concat($bisher, .,']')"/></Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Zwecke/Zweck">
		<xsl:if test="@valid='1'">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}"><xsl:value-of select="concat($bisher, .,']')"/></Bisher>
		</xsl:if>
	</xsl:template>
	<xsl:template match="Zweigniederlassungen/Zweigniederlassung">
		<xsl:if test="@valid='1'">
			<Bisher Ein="{@Ein}" seq="{@seq}" fldID="{@fldID}"><xsl:value-of select="concat($bisher, .,']')"/><ddl><xsl:value-of select="concat($bisher, .,']')"/></ddl></Bisher>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>


Ce XSLT me génére un fichier xml avec comme balise root ListBisher et un élément répétitif Bisher contenant 3 attribut et quelquefois un enfant du nom de ddl.

Ce que j'aimerais faire c'est ajouter un attribut id qui contienne la position ou un id unique (ca m'est égal) dans mon élément bisher.

Donc si vous avez une combine, un lien, une explication ou une solution c'est volontiers.

Merci pour votre aide
Modifié par virgul (11 Sep 2006 - 07:11)
Salut,

Merci beaucoup c'est exactement ce que je cherchais (j'aurais préféré un nombre) ca me convient parfaitement.

++

Thierry