[xsl] i need a progressive id...

Subject: [xsl] i need a progressive id...
From: "Gianni G" <giagug80@xxxxxxxxxxx>
Date: Sat, 17 Dec 2005 18:51:07 +0100
Hi,
i am an italian student.

I need to do an xsl transformation to trasform an xml file in an xmi file.

The xml file has a sintax like this:

<?xml version="1.0" encoding="ASCII" ?>
- <useCaseUMLDiagramModel:UseCaseDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:useCaseUMLDiagramModel="http://useCaseUMLDiagramModel";>
- <modelElements type="useCaseUMLDiagramModel:Actor" description="" name="Utente" location="Point(114, 134)" stereotype="Actor">
<sourceRelationships xsi:type="useCaseUMLDiagramModel:CommunicateConnection" target="//@modelElements.1" stereotype="communicate" />
</modelElements>
<modelElements type="useCaseUMLDiagramModel:UseCase" description="" name="Autenticazione" targetRelationships="//@modelElements.0/@sourceRelationships.0" location="Point(339, 149)" size="Dimension(100, 70)" stereotype="Use Case" />
</useCaseUMLDiagramModel:UseCaseDiagram>


I need to have an unique id for my xmi file.

This is a little part of my xsl file...

[...]
- <xsl:template match="//modelElements">
- <xsl:choose>
- <xsl:when test="@type='useCaseUMLDiagramModel:Actor'">
- <Behavioral_Elements.Use_Cases.Actor xmi.id="????"> <----------- HERE IS THE PROBLEM
- <Foundation.Core.ModelElement.name>
<xsl:value-of select="@name" />
</Foundation.Core.ModelElement.name>
<Foundation.Core.ModelElement.isSpecification xmi.value="false" />
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false" />
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false" />
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false" />
- <Foundation.Core.ModelElement.namespace>
<Foundation.Core.Namespace xmi.idref="D.1" />
- <!-- Use Case View
-->
</Foundation.Core.ModelElement.namespace>
</Behavioral_Elements.Use_Cases.Actor>
</xsl:when>
- <xsl:when test="@type='useCaseUMLDiagramModel:UseCase'">
- <Behavioral_Elements.Use_Cases.UseCase xmi.id="???"> <----------- HERE IS THE PROBLEM
- <Foundation.Core.ModelElement.name>
<xsl:value-of select="@name" />
</Foundation.Core.ModelElement.name>
<Foundation.Core.ModelElement.visibility xmi.value="private" />
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false" />
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false" />
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false" />
- <Foundation.Core.ModelElement.namespace>
<Model_Management.Model xmi.idref="D.1" />
- <!-- Use Case View
-->
</Foundation.Core.ModelElement.namespace>
</Behavioral_Elements.Use_Cases.UseCase>
</xsl:when>
- <xsl:otherwise>
<errore>errore</errore>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
[...]


The question is: how can i count the model elements and put the correct id?
I tryed to use the count function but it gives me the total number of elements.
I need something like a counter but i have also readed thah i cant update an xsl variable.


Someone can give me an help? It's so important!

Thanks, and sorry for my bad english.

Best regards, Gianni.

Current Thread