pices: nummerierung

hallo,
wie kann ich erreichen , dass obwohl eine xsl:for-each schleifen , die nummerierung einfach weiter geht und nicht von vorne wieder anfängt.
im moment habe ich als Ausgangdatei so  was:~~~xml

<mode id=1>
<unitProcedure id=1>
.....
</unitProcedure>
<unitProcedure id=2>
.....
</unitProcedure>
<unitProcedure id=3>
.....
</unitProcedure>
</mode>
<mode id=2>
<unitProcedure id=1>
.....
</unitProcedure>
<unitProcedure id=2>
.....
</unitProcedure>
<unitProcedure id=3>
.....
</unitProcedure>
</mode>

  
und hätte gern:  
~~~xml
  
<mode id="1">  
<unitProcedure id="1">  
.....  
</unitProcedure>  
<unitProcedure id="2">  
.....  
</unitProcedure>  
<unitProcedure id=3"">  
.....  
</unitProcedure>  
</mode>  
<mode id="2">  
<unitProcedure id="4">  
.....  
</unitProcedure>  
<unitProcedure id="5">  
.....  
</unitProcedure>  
<unitProcedure id="6">  
.....  
</unitProcedure>  
</mode>  

so sieht meine xsl datei aus ~~~xml

<xsl:template match="mode" >

		<xsl:if test="isComposedOf/Action)@resource!='NULL'">  
			<mode >  
				<xsl:attribute name="id"><xsl:number count="mode[Action/@resource!='NULL']"/></xsl:attribute>  
				<  
			  
				<xsl:apply-templates/>  
			</mode></xsl:if>  

xsl:template

<xsl:template match="isComposedOf">
<xsl:variable name="number" ><xsl:number count="wpml:isComposedOf"/> </xsl:variable>
<xsl:for-each select="Action">
<unitProcedure>
<xsl:attribute name="id" select="$number"/>
select="isRefinedBy/resource" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>
<label>
<xsl:value-of select="label" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"/>
</label>

		</unitProcedure>  
	</xsl:for-each>  
</xsl:template>
  
wie soll ich umgehen?  
gruß
  1. Hallo pices,

    wie kann ich erreichen , dass obwohl eine xsl:for-each schleifen , die nummerierung einfach weiter geht und nicht von vorne wieder anfängt.

    Ausgehend vom Quell- und Zielformat halte ich diesen Ansatz für geeigneter:

    <xsl:template match="node() | @*">  
      <xsl:copy>  
        <xsl:apply-templates select="node() | @*"/>  
      </xsl:copy>  
    </xsl:template>  
      
    <xsl:template match="@id[parent::unitProcedure]">  
      <xsl:attribute name="id">  
        <xsl:value-of select="count(preceding::unitProcedure) + 1"/>  
      </xsl:attribute>  
    </xsl:template>
    

    Ergebnis:

    <?xml version="1.0" encoding="UTF-8"?>  
    <root>  
      <mode id="1">  
          <unitProcedure id="1">.....</unitProcedure>  
          <unitProcedure id="2">.....</unitProcedure>  
          <unitProcedure id="3">.....</unitProcedure>  
      </mode>  
      <mode id="2">  
          <unitProcedure id="4">.....</unitProcedure>  
          <unitProcedure id="5">.....</unitProcedure>  
          <unitProcedure id="6">.....</unitProcedure>  
      </mode>  
    </root>
    

    Falls die id-Attributwerte tatsächlich dem ID-Typ entsprechen sollen, dann den Zahlenwerten noch (einen) Buchstaben voranstellen.

    Grüße,
    Thomas