Bonjour,
Je souhaiterai savoir s'il est possible d'avoir la main sur le nom d'un fichier que l'on créer à partir d'une transormation via un XSLT?

Je m'explique.

J'ai un fichier XML que je dois transformer en TXT
Pour cela j''ai créé un fichier XSLT en precisant method="text":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://www.Apriso.com/ZP01.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="ns0 xs">
    <xsl:output  method = "text" encoding = "string" omit-xml-declaration = "yes" standalone = "yes" indent = "yes"/>
	<xsl:include href="C:\Inetpub\wwwroot\SchemaRepository\Maps\XRIS_Functions.xsl"/>
	<xsl:template match="/">
		<xsl:for-each select="ns0:ZP01/ns0:MAIN/ns0:LINES">
			<xsl:call-template name="CreateFlatFile">
				<xsl:with-param name="Line_list" select="ns0:LINE"/>
				<xsl:with-param name="delimiter" select="','"/>
			</xsl:call-template>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
Ce fichier XSLT appelle une fonction XSL "CreateFlatFile":

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
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<!-- ___________________________________________________________ CreateFlatFile ___________________________________________________________-->
	<!--Creation Flat File-->
	<!-- Permet de sortir une List Of Char passée en entrée -->
	<xsl:template match="*">
		<xsl:for-each select=".">
			<xsl:call-template name="CreateFlatFile">
				<xsl:with-param name="Line_list" select="."/>
				<xsl:with-param name="delimiter">,</xsl:with-param>
			</xsl:call-template>
		</xsl:for-each>
	</xsl:template>
 
	<!--Definition de la fonction -->
	<xsl:template name="CreateFlatFile">
		<xsl:param name="Line_list"/>
		<xsl:param name="delimiter"/>
 
<!--On recupere le premier element de la liste -->
		<xsl:variable name="firstLine">
			<xsl:choose>
				<xsl:when test="contains($Line_list, $delimiter)">
					<xsl:value-of select="substring-before($Line_list, $delimiter)"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="normalize-space(translate(translate($Line_list,'{',''),'}',''))"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>		
		<xsl:variable name="remainingLines" select="substring-after($Line_list, $delimiter)"/>
 
		<!--On creer la sortie au type string -->
		<xsl:choose>
			<xsl:when test="string-length($firstLine) > 0">
						<xsl:value-of select="translate(translate($firstLine,'{',''),'}','')"/>
						<xsl:text>
</xsl:text> 
			</xsl:when>
		</xsl:choose>
 
		<!--Test si il reste des element dans la liste. Si oui alors on va relancer la fonction sinon fin de traitement -->
		<xsl:choose>
			<xsl:when test="string-length($firstLine) = 0">
				<!--On ne fait rien: on sort de cette fonction -->
			</xsl:when>
			<xsl:when test="string-length($remainingLines) != 0">
				<xsl:call-template name="CreateFlatFile">
					<xsl:with-param name="Line_list" select="$remainingLines"/>
					<xsl:with-param name="delimiter">
						<xsl:value-of select="$delimiter"/>
					</xsl:with-param>
				</xsl:call-template>
			</xsl:when>
		</xsl:choose>
	</xsl:template>	
 
</xsl:stylesheet>
Tout fonctionne très bien, le contenu de mon XML d'entrée est bien tranformé en text sans les balises.
Mon seul soucis: le fichier créé dans mon répertoire s'apelle "XMLOutput_xx.xml". Je voudrait qu'il s'apelle "DateTime_xx.txt".

Est-ce que quelqu'un aurait déjà rencontré cette problématique? Faut-il agir au niveau du XSLT ou du XSL?

Merci