[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: replacing values in file1 from file2

Subject: RE: replacing values in file1 from file2
From: "M. David Peterson" <m.david@xxxxxxxxxx>
Date: Thu, 25 Mar 2004 07:52:36 -0700
english file1
A couple of changes to a solution I posted a few days ago should give
you exactly what you want...

This XSL >>

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="sourceDoc" select="document('file_1.xml')"/>
<xsl:variable name="translationDoc" select="document('file_2.xml')"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
  <xsl:variable name="groupTranslation">
    <xsl:element name="translations">
      <xsl:apply-templates select="$sourceDoc/file1/terms">
        <xsl:with-param name="translationDoc"
select="$translationDoc/file2/translated"/>
      </xsl:apply-templates>
    </xsl:element>
  </xsl:variable>
  <xsl:copy-of select="$groupTranslation"/>
</xsl:template>

<xsl:template match="terms">
  <xsl:param name="translationDoc"/>
  <xsl:variable name="pos" select="position()"/>
    <xsl:element name="tranlatedTerm">
      <xsl:element name="source">
        <xsl:attribute name="lang"><xsl:value-of
select="source[position() = 1]/@lang"/></xsl:attribute>
        <xsl:value-of select="source[position() = 1]/term"/>
      </xsl:element>
      <xsl:element name="translation">
        <xsl:attribute name="lang"><xsl:value-of
select="$translationDoc/term[position() = $pos]/@lang"/></xsl:attribute>
        <xsl:value-of select="$translationDoc/term[position() = $pos]"/>
      </xsl:element>
    </xsl:element>
</xsl:template>
</xsl:stylesheet>

Outputs this XML >>

<?xml version="1.0" encoding="UTF-8"?>
<translations>
  <tranlatedTerm>
    <source lang="english">dog</source>
    <translation lang="danish">hund</translation>
  </tranlatedTerm>
  <tranlatedTerm>
    <source lang="english">dog</source>
    <translation lang="danish">bord</translation>
  </tranlatedTerm>
</translations>

Now just convert the $groupTranslation variable to a nodeset and you can
use apply-templates to transform it or just store it as is as an XML
file for later use.

Best of luck!

<M:D/>



-----Original Message-----
From: ronan martin [mailto:ronanmartin124@xxxxxxxxxxx] 
Sent: Thursday, March 25, 2004 4:46 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  replacing values in file1 from file2

Hi

I've been stuck on this - I thought it would be simpler than it is. (I'm

pretty much only just past beginner level)
I have two xml files. One with pairs of terms in source and target
language 
but with an untranslated target language term (say, English and Danish).
In 
another xml file I have the Danish translations, one for each pair of
terms, 
and sequenced in exactly the same way.

<file1>
  <terms>
    <source lang="english">
      <term>dog</term>
    </source>
    <source lang="danish">
      <term>dog</term>
    </source>
  </terms>
  <terms>
    <source lang="english">
      <term>dog</term>
    </source>
    <source lang="danish">
      <term>dog</term>
    </source>
  </terms>
</file1>

<file2>
  <tranlated>
    <term lang="danish">hund</term>
    <term lang="danish">bord</term>
  </translated>
</file2>

I've tried matching a nodeset in file1 using <..  
match="//source[@lang='danish']/term"> seems fine. Then I've tried to 
copy-of the value from select="document('file2.xml')//term/text()" in 
various ways. I get the first value only from the list copied, but in
all 
the locations I wanted. How do I pass on the number of the node in the
first 
nodeset to the nodeset selected from the second file. I tried setting up
a 
variable using position() but couldn't get it to work.
Sorry this is so long-winded. I simplified the xml. In reality I'm using
tmx 
which is a translation memory format.

thanks
Ronan

_________________________________________________________________
Fe alle de nye og sjove ikoner med MSN Messenger http://messenger.msn.dk

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.