Subject: Re: [xsl] Using xsl:key From: siarom egrub <egrubs@xxxxxxxxx> Date: Thu, 30 Nov 2006 19:00:47 -0800 (PST) |
David, Thanks for responding! I will provide more information. The way I have it setup is as follows: I am going to call this XML snippet the master XML because it calls the other language spaecific XMLs. This is because I want one PDF output with all languages. <====master.xml=====> <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="PCALetters.xsl" type="text/xsl"?> <!DOCTYPE RegLetter PUBLIC "-//SE Inc//DTD Regulatory Letters XML//EN" "letters.dtd" [ <!ENTITY T11-30-06S030132023_EN SYSTEM "T11-30-06S030132023-EN.xml"> <!ENTITY T11-30-06S030132023_DE SYSTEM "T11-30-06S030132023-DE.xml"> <!ENTITY T11-30-06S030132023_FR SYSTEM "T11-30-06S030132023-FR.xml"> <!ENTITY T11-30-06S030132023_IT SYSTEM "T11-30-06S030132023-IT.xml"> ]> <RegLetter docpartnum="T11-30-06S" watermark="no" status="preview"> <Stuffer> <docinfo> <SEIlogo> <figureprint> <graphic fileref="seilogo.eps"/> </figureprint> </SEIlogo> <madeIn>Made in </madeIn> <copyright>© Copyright...</copyright> <printedIn>Printed in </printedIn> <address> <addressline>B...4800 Harbor Street...</addressline> </address> </docinfo> &T11-30-06S030132023_EN; &T11-30-06S030132023_DE; &T11-30-06S030132023_FR; &T11-30-06S030132023_IT; </Stuffer> </RegLetter> </====master.xml=====> This is a snippet of the English XML file (first output in the PDF) <=====T11-30-06S030132023-EN.xml=====> <?xml version="1.0" encoding="iso-8859-1"?> <lang type="EN"> <infogroup> <fixedterms> <term id="caution" text="CAUTION"/> <term id="warning" text="WARNING"/> <term id="notice" text="NOTICE"/> ... </fixedterms> </infogroup> ... <warning><para>Missing translation...(Testing Warning)</para></warning>... </lang> </=====T11-30-06S030132023-EN.xml=====> German XML snippet (2nd output in the PDF) <=====T11-30-06S030132023-DE.xml=====> <?xml version="1.0" encoding="iso-8859-1"?> <lang type="DE"> <infogroup> <fixedterms> <term id="caution" text="WARNHINWEIS"/> <term id="warning" text="WARNUNG"/> <term id="notice" text="HINWEIS"/> ... </fixedterms> </infogroup> ... <warning><para>Missing translation...(Testing Warning)</para></warning>... </lang> </=====T11-30-06S030132023-DE.xml=====> French XML snippet (3rd output in the PDF) <=====T11-30-06S030132023-FR.xml=====> <?xml version="1.0" encoding="iso-8859-1"?> <lang type="FR"> <infogroup> <fixedterms> <term id="caution" text="ATTENTION"/> <term id="warning" text="AVERTISSEMENT"/> <term id="notice" text="REMARQUE"/> ... </fixedterms> </infogroup> ... <warning><para>Missing translation...(Testing Warning)</para></warning>... </lang> </=====T11-30-06S030132023-FR.xml=====> Italian XML snippet (4th output in the PDF) <=====T11-30-06S030132023-IT.xml=====> <?xml version="1.0" encoding="iso-8859-1"?> <lang type="IT"> <infogroup> <fixedterms> <term id="caution" text="ATTENZIONE"/> <term id="warning" text="AVVERTENZA"/> <term id="notice" text="AVVISO"/> ... </fixedterms> </infogroup> ... <warning><para>Missing translation...(Testing Warning)</para></warning>... </lang> </=====T11-30-06S030132023-IT.xml=====> There are more languages with the same concept. Here is the XSL Snippet: <!--This is declared at the top of the FO style sheet--> <xsl:key name="terms" match="term" use="@id"/> <xsl:template match="/"> <xsl:template match="warning"> <fo:block text-align="center"> <fo:table border-style="solid" border-width="1pt" space-after="2.5mm"> <fo:table-column column-width="75%"/> <fo:table-body> <fo:table-row> <fo:table-cell padding-top="2mm"> <fo:block text-align="center" font-weight="bold"> <fo:external-graphic content-width=".3in" src="warning.eps"/> <xsl:for-each select="key('terms','warning')"> <xsl:text> </xsl:text> <xsl:value-of select="@text"/> </xsl:for-each> </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell padding-top="2mm" padding-bottom="2mm" text-align="justify" font-weight="bold" start-indent="2mm" end-indent="2mm"> <fo:block> <xsl:apply-templates/> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:block> </xsl:template> Thanks again! Siarom --- David Carlisle <davidc@xxxxxxxxx> wrote: > > you don't show enough of your input to really help. > In particular, > where do you have the entity references? (you show > them appearng > immediately after the entity declaration, but that > presumably isn't > where they appear. Also where in the XML do you > record which are the > german texts and which are the english ones? The > entity names end in > _DE and _EN but entities are expanded _before_ XSLT > starts, they are > just a macro pre-processor syntax. So XSLT just sees > the XML that > results from expanding the entities and never sees > the entity names. > > So, somewhere in your source xml or your stylesheet > you must have a > syntax that specifies which language you want, and > somewhere in your xml > that holds the language texts, you must have some > syntax to say which > language it is for. The details of what XSLT you use > to tie these > together depend on the details of where the > information is specified, > but you haven't given any information. > > David > > ____________________________________________________________________________________ Cheap talk? Check out Yahoo! Messenger's low PC-to-Phone call rates. http://voice.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Using xsl:key, David Carlisle | Thread | [no subject], Unknown |
Re: [xsl] Using xsl:key, David Carlisle | Date | [no subject], Unknown |
Month |