Subject: AW: [xsl] Replacing all Occurences of a String From: "Roger" <roger@xxxxxxxx> Date: Fri, 31 Aug 2001 11:06:09 +0200 |
Hi there Didn't read the following postings so far (I will just after that mail), but my problem is that I get the following xml (see below for sfzSprache, sfzUntertitel, sfzRelease) from a third party out of a database - this is just one film -, so I can't modify it myself. I only can use XSLT to get the german version of sfzSprache, sfzUntertitel, sfzRelease. Best Roger <?xml version="1.0"?> <iba> <querystring type="resultset"> <path>filmausgabe.html/D20</path> </querystring> <page type="resultset"> <Section type="row" ID="Section1"> <ID>1</ID> <lang>de</lang> <title>Filmindex Schweiz</title> <uri>filmindex_schweiz</uri> <sectioninfo> <keywordset/> <abstract/> </sectioninfo> <foreignsectionid>0</foreignsectionid> <created>0000-00-00 00:00:00</created> <createdby>Roger Fischer</createdby> <changed>20010703180309</changed> <changedby/> <l>0</l> <r>0</r> <Page type="row" ID="Page1"> <ID>1</ID> <lang>de</lang> <title>Filmausgabe</title> <uri>filmausgabe.html</uri> <pageinfo> <keywordset>Schweizer Film, Film-Index, Schweizer Film Datenbank</keywordset> <abstract/> </pageinfo> <xslt>filmausgabe.xsl</xslt> <foreignsectionid>1</foreignsectionid> <active>1</active> <created>0000-00-00 00:00:00</created> <createdby>Roger Fischer</createdby> <changed>20010704152338</changed> <changedby>Roger Fischer</changedby> <Document type="row" selected="selected" ID="Document20"> <ID>20</ID> <lang/> <title>A l'est des rêves</title> <abstract/> <documentinfo> <keywordset/> </documentinfo> <created>0000-00-00 00:00:00</created> <createdby/> <changed>20010824105615</changed> <changedby/> <Film type="row" ID="Film111997539"> <ID>111997539</ID> <lang>de</lang> <sfzTitel>A l'est des rêves</sfzTitel> <sfzSubtitel/> <sfzProdjahr/> <sfzRelease>May 2000</sfzRelease> <sfzFormat>Digital Beta</sfzFormat> <sfzFarbe>1</sfzFarbe> <sfzDauer>50</sfzDauer> <sfzSprache>Russian</sfzSprache> <sfzUntertitel>French and English</sfzUntertitel> <sfzKategorie>2</sfzKategorie> <objectname>Film</objectname> <created>0000-00-00 00:00:00</created> <createdby>someone</createdby> <changed>20010704163147</changed> <changedby>someone</changedby> </Film> <Article type="row" ID="Article171"> <ID>171</ID> <lang>de</lang> <title>A l'est des rêves</title> <subtitle>Luc Peter</subtitle> <articleinfo> <author> <name>Doris Senn</name> <email> <ulink/> </email> <website> <ulink/> </website> </author> <date>2001-08-22</date> <editor> <name>Meret Ernst</name> </editor> <publisher> <publishername>Chronos Verlag, Zürich</publishername> </publisher> <copyright> <year>2000</year> <holder>Doris Senn</holder> </copyright> <keywordset>Cinema 46, Schweizer Film</keywordset> <pagenum>225 f.</pagenum> </articleinfo> <abstract/> <main> <para> «Feinde - Ich bin von Feinden umgeben...» Die achtzigjährige Klawdia Mamykina sitzt in ihrem geblümten Morgenmantel am Frühstückstisch, schluchzt in die Kamera, verwirft die Hände. Nur um sich wenig später die Augen zu reiben und zu erklären: «An dieser Stelle klopft jemand, ich sitze allein auf einem Thron und habe meinen Text vergessen. So endete meine Karriere in der Blüte meiner Jahre. Mein Gedächtnis hat mich im Stich gelassen...» </para> <para>Die ehemalige Theaterschauspielerin lebt im Altersheim «Savina», das seit rund einem Jahrhundert seine Türen für VertreterInnen der darstellenden Kunst offen hält: Tänzer, Sängerinnen, Regisseure und Schauspielerinnen können hier ihren Lebensabend verbringen. Das in neoklassizistischem Stil erbaute Herrschaftshaus bietet rund hundert Insassen ein Zuhause, das ihnen weit gehende Autonomie belässt. In einem grossen Park auf einer Flussinsel nahe Sankt Petersburg gelegen, erzählt das Haus - wie seine BewohnerInnen - mit zurückhaltender Vornehmheit von anderen Zeiten. </para> <para>Die Russlandkennerin Thérèse Obrecht und der Dokumentarfilmer Luc Peter porträtieren in A l'est des rêves fünf der Heimbewohner und lassen sie schwelgen in ihren Erinnerungen. Alte Fotos werden herausgesucht, auf denen die einstige Schönheit wie ein ferner Schatz bestaunt wird. «Ein gut aussehender Junge war ich damals, nicht wahr?», meint der Schauspieler Wassili Leonow, für den die Karriere hauptsächlich Soldatenrollen vorbehielt. Und Ekatarina Sudakowa, die auf dem Vorplatz ihren kleinen Teppich ausschüttelt, weist auf die «doch viel hübscheren Damen da drüben» und rezitiert dazu - frühmorgens und noch ohne Gebiss - eine passende Stelle aus dem Faust. Ein bürgerliches Leben wäre für sie nie in Frage gekommen, sagt sie, die als Kritikerin der staatlichen Kollektivierung sechzehn Jahre in Lagern verbracht hat. Eben diese Erfahrung habe sie zur Dichterin gemacht, ist Sudakowa überzeugt. Eine ganz andere Erinnerung an das kommunistische Regime hat Margarita Grischkewitsch, Startänzerin des Lenin grader Staatsballetts, die Nurejews Flucht in den Westen bitter als Verrat empfindet. Und Nina Tschumskaya, die auf eine erfolgreiche Karriere als Opernsängerin zurückblicken kann, glaubt, dass die Perestroika lediglich die «Diebe» reicher, die Künstler und Intellektuellen aber ihres Brots beraubt habe. </para> <para> So gewährt der Regisseur nicht nur Einblick in die Lebensläufe der illustren Heimbewohner, er zeigt auch deren Verquickung mit einem Jahrhundert sowjetischer Geschichte. Als Erzählstruktur dient ihm der Alltag im Haus «Savina»: die Mahlzeitenverteilung mit dem anachronistischen Handkarren beispielsweise oder die obligaten Verrichtungen der Pensionäre wie Gemüsegarten pflegen, Wäsche aufhängen oder in den verregneten Tag hinausschauen. Immer wieder lässt Luc Peter die ruhmvolle Vergangenheit die eintönige Gegenwart durchdringen: etwa wenn aus dem Stegreif eine Rolle deklamiert oder Literatur zitiert wird, wenn sich über die Bilder der Gegenwart die - noch immer -eindrückliche Stimme von Nina Tschumskaya legt, die ein Konzert im «Savina» vorbereitet. A l'est des rêves ist der erste lange Dokumentarfilm von Luc Peter und eine in ihrer Schlichtheit berührende Chronik. </para> </main> <objectname>Article</objectname> <created>0000-00-00 00:00:00</created> <createdby>someone</createdby> <changed>20010827185149</changed> <changedby>someone</changedby> </Article> </Document> </Page> </Section> </page> <film type="resultset"> <Film type="row" ID="Film111997539"> <ID>111997539</ID> <lang>de</lang> <sfzTitel>A l'est des rêves</sfzTitel> <sfzSubtitel/> <sfzProdjahr/> <sfzRelease>May 2000</sfzRelease> <sfzFormat>Digital Beta</sfzFormat> <sfzFarbe>1</sfzFarbe> <sfzDauer>50</sfzDauer> <sfzSprache>Russian</sfzSprache> <sfzUntertitel>French and English</sfzUntertitel> <sfzKategorie>2</sfzKategorie> <objectname>Film</objectname> <created>0000-00-00 00:00:00</created> <createdby>someone</createdby> <changed>20010704163147</changed> <changedby>someone</changedby> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion349"> <ID>349</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>1</Funktion> <AdressNr>3212</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen1"> <ID>1</ID> <funktion> <en>Directed by</en> <de>Realisation</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen380"> <ID>380</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Peter</name> <vorname>Luc</vorname> <name2>Belle Journée Productions</name2> <plz>1203</plz> <ort>Genève</ort> <email/> <sfzId>3212</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion350"> <ID>350</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>2</Funktion> <AdressNr>3212</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen2"> <ID>2</ID> <funktion> <en>Written by</en> <de>Drehbuch oder Drehvorlage</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen380"> <ID>380</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Peter</name> <vorname>Luc</vorname> <name2>Belle Journée Productions</name2> <plz>1203</plz> <ort>Genève</ort> <email/> <sfzId>3212</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion351"> <ID>351</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>3</Funktion> <AdressNr>-626623678</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen3"> <ID>3</ID> <funktion> <en>Cinematographer</en> <de>Kamera</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen54"> <ID>54</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Barraz</name> <vorname>Michel</vorname> <name2/> <plz/> <ort/> <email/> <sfzId>-626623678</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion352"> <ID>352</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>3</Funktion> <AdressNr>3212</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen3"> <ID>3</ID> <funktion> <en>Cinematographer</en> <de>Kamera</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen380"> <ID>380</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Peter</name> <vorname>Luc</vorname> <name2>Belle Journée Productions</name2> <plz>1203</plz> <ort>Genève</ort> <email/> <sfzId>3212</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion353"> <ID>353</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>4</Funktion> <AdressNr>2831</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen4"> <ID>4</ID> <funktion> <en>Editing</en> <de>Schnitt</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen364"> <ID>364</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Sudan</name> <vorname>Karine</vorname> <name2/> <plz>1201</plz> <ort>Genève</ort> <email/> <sfzId>2831</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion354"> <ID>354</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>5</Funktion> <AdressNr>-626623678</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen5"> <ID>5</ID> <funktion> <en>Sound</en> <de>Ton</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen54"> <ID>54</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Barraz</name> <vorname>Michel</vorname> <name2/> <plz/> <ort/> <email/> <sfzId>-626623678</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion355"> <ID>355</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>5</Funktion> <AdressNr>3212</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen5"> <ID>5</ID> <funktion> <en>Sound</en> <de>Ton</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen380"> <ID>380</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Peter</name> <vorname>Luc</vorname> <name2>Belle Journée Productions</name2> <plz>1203</plz> <ort>Genève</ort> <email/> <sfzId>3212</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion356"> <ID>356</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>9</Funktion> <AdressNr>1737</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen9"> <ID>9</ID> <funktion> <en>Production</en> <de>Produktion</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen264"> <ID>264</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Escale Films</name> <vorname/> <name2/> <plz>1201</plz> <ort>Genève</ort> <email/> <sfzId>1737</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion357"> <ID>357</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>9</Funktion> <AdressNr>57077026</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen9"> <ID>9</ID> <funktion> <en>Production</en> <de>Produktion</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen637"> <ID>637</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Belle Journée Productions</name> <vorname/> <name2/> <plz>1203</plz> <ort>Genève</ort> <email/> <sfzId>57077026</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> <Cinema_FilmFunktion type="row" ID="Cinema_FilmFunktion358"> <ID>358</ID> <fun> <FilmNr>111997539</FilmNr> <Funktion>10</Funktion> <AdressNr>1737</AdressNr> <Kontaktpers>0</Kontaktpers> <Kontaktperson> </Kontaktperson> </fun> <Funktionen type="row" ID="Funktionen10"> <ID>10</ID> <funktion> <en>World Rights</en> <de>Weltrechte</de> </funktion> </Funktionen> <Adressen type="row" ID="Adressen264"> <ID>264</ID> <adresse> <ipiId/> <fmId>0</fmId> <name>Escale Films</name> <vorname/> <name2/> <plz>1201</plz> <ort>Genève</ort> <email/> <sfzId>1737</sfzId> <caeId/> <landcode>CH</landcode> </adresse> </Adressen> </Cinema_FilmFunktion> </Film> </film> </iba> -----Ursprüngliche Nachricht----- Von: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]Im Auftrag von Chris Bayes Gesendet: Donnerstag, 30. August 2001 18:03 An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Betreff: RE: [xsl] Replacing all Occurences of a String Roger, Have a look at http://www.biglist.com/lists/xsl-list/archives/200008/msg01300.html for some ideas on internationalization. You can extend this idea to handle your month conversions if your datafile looked like <dictionary> <months lang="en"> <month abbr="jan">january</month> ... ... <month abbr="dec">december</month> </months> <months lang="fr"> <month abbr="jan">janvier</month> ... Then to convert $monthtotrans from french to english abbreviation something like <xsl:value-of select="document('months.xml')/dictionary/months[@lang='en']/month[posit ion()/document('months.xml')/dictionary/months[@lang='fr']/month[@abbr=$ monthtotrans]/@abbr Or <xsl:variable name="monthnum" select="count(preceding-sibling::*/document('months.xml')/dictionary/mon ths[@lang='fr']/month[@abbr=$monthtotrans])" /> <xsl:value-of select="document('months.xml')/dictionary/months[@lang='en']/month[$mont hnum]/@abbr" /> Ciao Chris XML/XSL Portal http://www.bayes.co.uk/xml > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Roger > Sent: 30 August 2001 15:45 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: AW: [xsl] Replacing all Occurences of a String > > > Hi David > The problem is I have all months and also all languages, like: > > <sfzSprache>Italian/German/Swiss-German/French</sfzLanguage> > > and I want in the end: > > <sfzSprache>Italienisch/Deutsch/Schweizerdeutsch/Französisch</ > sfzLanguage> > > > If I only would have "German" or "October" it would be easy. > I would then transform it like this: > > <xsl:choose> > <xsl:when test="string-length(sfzSprache)>0"> > Sprache: > <xsl:choose> > <xsl:when test="string(sfzSprache)='German'"> > Deutsch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='Italian'"> > Italienisch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='Swiss-German'"> > Schweizerdeutsch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='Rhaeto-romanic'"> > Rätoromanisch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='French'"> > Französisch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='English'"> > Englisch<br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='Chinese'"> > Chinesisch <br /> > </xsl:when> > <xsl:when test="string(sfzSprache)='Russian'"> > Russisch <br /> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="sfzSprache"/><br /> > </xsl:otherwise> > </xsl:choose> > > > Thanx for any additional hints > best > roger > > > > > <sfzRelease>January, February 2001</sfzRelease> > > I want at the end: > > <sfzRelease>Januar, Februar 2001</sfzRelease> > > Hmm, I don't suppose translate(sfzRelease,'y','') works in > general does it. (If only natural languages followed regular > paterns like > mathematics....) > > If you have a replace string template then probably the > easiest thing to do is make a variable containg a node set of > replacements eg > > <y en="January" de="Januar"/> > > > then just make a recusive template that works down a list of > y nodes, doing a replacement using the first y node then > calling itself on the rest of the list. > > David > > _____________________________________________________________________ > This message has been checked for all known viruses by Star > Internet delivered through the MessageLabs Virus Scanning > Service. For further information visit > http://www.star.net.uk/stats.asp or > alternatively call Star > Internet for details on the Virus Scanning Service. > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Replacing all Occurences , Tim Watts | Thread | [xsl] Replacing all Occurences of a, Roger |
Re: [xsl] Top Ten Java and XSLT Tip, David Carlisle | Date | [xsl] how to test the existence of , Stephane . Le-Deaut |
Month |