Subject: [xsl] Re: For each child, create a new parent node including only that child From: "Manuel Souto Pico terminolator@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 28 Aug 2019 11:02:55 -0000 |
A quick update. I think I am closer in this version: https://xsltfiddle.liberty-development.net/6rewNxx/4. The second problem is fixed in it, the other two problems remain. I keep working on it, any tips are most welcome. Cheers, Manuel Manuel Souto Pico <terminolator@xxxxxxxxx> escreveu no dia quarta, 28/08/2019 C (s) 12:52: > Dear all, > > What I am trying to do should be quite easy but I need some help. > > Here you can see the kind of input I have and my first attempt: > https://xsltfiddle.liberty-development.net/6rewNxx > > So: > > - tu > -- tuv en (1) > -- tuv pt (1) > -- tuv pt (2) > -- tuv pt (n) > > In that input you can see that a tu node might have one source language > tuv child and more than one target-language tuv children, such as the one > with source text "Moving Around and Tracking Progress". > > The expect output is to have only one tuv child per tu node: > > - tu > -- tuv en (1) > -- tuv pt (1) > > - tu > -- tuv en (1) > -- tuv pt (2) > > - tu > -- tuv en (1) > -- tuv pt (1) > > Something like this: > > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE tmx SYSTEM " > https://raw.githubusercontent.com/moiatgit/omegat/master/src/schemas/tmx14.dt d > "> > > <tu> > <tuv xml:lang="en-ZZ"> > <seg>Moving Around and Tracking Progress</seg> > </tuv> > <tuv xml:lang="pt-BR"> > <seg>MovimentaC'C#o e monitoramento de progresso</seg> > </tuv> > </tu> > > <tu> > <tuv xml:lang="en-ZZ"> > <seg>Moving Around and Tracking Progress</seg> > </tuv> > <tuv xml:lang="pt-BR"> > <seg>Movendo-se e Monitorando o seu progresso</seg> > </tuv> > </tu> > > <tu> > <tuv xml:lang="en-ZZ"> > <seg>Moving Around and Tracking Progress</seg> > </tuv> > <tuv xml:lang="pt-BR"> > <seg>Movendo-se e Monitorando seu progresso</seg> > </tuv> > </tu> > > In other words, unmerge the tu node, keeping always the same source text. > > My stylesheet is: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> > <xsl:strip-space elements="*"/> > > <xsl:template match="body"> > <xsl:copy> > <xsl:for-each select='tu/tuv[@xml:lang="pt-BR"]'> > <tu> > <xsl:copy-of > select='ancestor::tuv[@xml:lang="en-ZZ"]'/> > <xsl:copy-of select="."/> > </tu> > </xsl:for-each> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > It has several problems: > > 1. The tmx root node is missing in my output > 2. The source language (en-ZZ) does not appear in my output > 3. It is specific for pt-BR, but the tag for the target language (i.e. for > the multiple children) could be any -- the stylesheet should be generic > (target-language agnostic). > > I don't have a preference about the XSLT version, I think there are > non-commercial (free to use) Saxon processors for all three. > > Hopefully somebody can help me find solutions or point me in the right > direction. Thanks in advance. > > Cheers, Manuel
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] For each child, create a new , Manuel Souto Pico te | Thread | Re: [xsl] Re: For each child, creat, Ruud GROSMANN r.gros |
[xsl] For each child, create a new , Manuel Souto Pico te | Date | Re: [xsl] Re: For each child, creat, Ruud GROSMANN r.gros |
Month |