RE: [xsl] Transformation of hierarchy, changing levels, and... back

Subject: RE: [xsl] Transformation of hierarchy, changing levels, and... back
From: cknell@xxxxxxxxxx
Date: Tue, 02 Aug 2005 11:40:31 -0400
Are the parenthetical expressions meant to appear in the output document or are they there to illustrate the relationship between the elements in the input document and the elements in the output document?
--
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Marcin Milkowski <milek_pl@xxxxx>
Sent:     Tue, 02 Aug 2005 17:13:20 +0200
To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  [xsl] Transformation of hierarchy, changing levels, and... back

hi,

I've been trying to make some transformation from a structure:

<Tu>
	<Tuv>
		@Lang
		some text1
		<df>some text2</df>
		<ut>some optional text</ut>
		some text
		<ut>some more text</ut>
		and some text
	</Tuv>
	<Tuv>
		@Lang
		some text
		<df>
		some text
		</df>
		<ut>some optional text</ut>
		some text
		<ut>some more text</ut>
		and some text
	</Tuv>
</Tu>

to a structure

<trans-unit>	(=Tu)
	@id
	<source> (=Tu/Tuv@Lang=$blabla)

		some text1
		<g@id@barfoo/>	(<df>)
		some text2
		<g@id@foobar/>	(</df>)
		<ph@id>some optional text</ph>(=ut)
		some text
		<ph@id>some more text</ut>
		and some text
 	</source>
	
	<target> (=Tu/Tuv@Lang=$foobar)
		some text1
		<g@id@barfoo/>	(<df>)
		some text2
		<g@id@foobar/>	(</df>)
		<ph@id>some optional text</ph>(=ut)
		some text
		<ph@id>some more text</ut>
		and some text
	</target>
</trans-unit>

I tried to match //Tu, and then use for-each to match all Tuv[1]/ut and Tuv[2]/ut. This approach turned quite difficult because I had to insert ut at exactly the same position in source as it was in Tuv[1]. Probably I should use more templates and match //Tu/Tuv or something like that, but I wouldn't know how to close the trans-unit tag (is there a way to check if this Tuv is Tu/Tuv[1] or Tu/Tuv[2]?). Additionally, I would need to produce a second file with ids replacing all text between tags in Tu/Tuv[1]@Lang=foobar and Tu/Tuv[2]@lLang=barfoo. (So the text must be uniquely numbered, or indexed in the other file). The third step would be to backconvert the transformed files into a source one.

Any ideas what method would be the best in this case? All help very appreciated.

Best regards,
	Marcin Milkowski

Current Thread