Can we Create a Sequence in XSLT? -


i generating text file using xslt.when pass xml input xslt converting xml input text file.can provide sequence number each invocation.

and store in variable.

1)if suppose first time execution 1 text file created there variable inside xslt (<sequence>) should assign number 1 below

<sequence>1</sequence> 

2)for second time execution 1 more text file created the sequence variable should increase.

<sequence>2<sequence> 

3)for third time execution 1 more text file created sequence becomes this

<sequence>3</sequence> 

this thing can create sequence in oracle database , call sequence inside xslt , each execution sequence increased

<sequence>calloraclesequence</sequence> 

can please suggest out using oracle sequence.can handle inside xslt.

the xslt not maintain state between executions of transforms.

one option leverage external config file contains sequence number. using entity reference, can make xml config part of xslt document read it's current value , when xslt executes, increment number , overwrite config file new sequence number using <xsl:result-document>.

below working example of xslt 2.0 stylesheet assumes there sequence file called sequence.xml in same directory xslt being executed:

<?xml version="1.0" encoding="utf-8"?> <!--delare entities reference sequence file--> <!doctype xsl:stylesheet [ <!entity sequencefile system "sequence.xml"> ]> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="2.0">      <xsl:output name="sequenceoutput" method="xml" indent="yes"/>     <!--this variable used store expanded entity reference        current sequence.xml file     when xslt parsed "look" xml parser:     <xsl:variable name="sequence><sequence>1</sequence></xsl:variable>   -->     <xsl:variable name="sequence">         <!--         entity reference expand to:              <sequence>x</sequence>          when xslt parsed         -->         &sequencefile;     </xsl:variable>    <!--     use document() function empty value read xslt      , parse sequence value produced entity reference    -->     <xsl:variable name="currentsequencevalue"        select="number(document('')/*/xsl:variable[@name='sequence']/sequence)"/>      <xsl:template match="/">         <!--do normal processing of xml document-->         <xsl:apply-templates />          <!--         overwrite sequence file incremented value         -->         <xsl:result-document format="sequenceoutput" href="sequence.xml">           <sequence><xsl:value-of select="$currentsequencevalue+1"/></sequence>         </xsl:result-document>      </xsl:template>      <xsl:template match="@*|node()">         <xsl:copy>             <xsl:apply-templates select="@*|node()"/>         </xsl:copy>     </xsl:template>  </xsl:stylesheet> 

Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -