[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Data mapping / loading (?)
- From: Dan Diebolt <dandiebolt@yahoo.com>
- To: Jeff Rafter <jeffrafter@earthlink.net>, xml-dev@lists.xml.org
- Date: Tue, 03 Apr 2001 03:12:53 -0700 (PDT)
Jeff: I simplified your problem a little turning all of your value#n tags
in source into straight value tags. The following command
saxon -o combined.xml source.xml dest.xml
Generates this output:
file combined.xml
<?xml version="1.0" encoding="utf-8"?>
<mapping>
<source href="source.xml"/>
<dest href="dest.xml"/>
<assign source="10" dest="Five plus five equals?"/>
<assign source="0" dest="Five minus five equals?"/>
</mapping>
Regards,
Dan
------------
file: source.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="source.xsl"?>
<source>
<value>10</value>
<value>0</value>
</source>
file: dest.xml
<?xml version="1.0"?>
<dest>
<question>Five plus five equals?</question>
<question>Five minus five equals?</question>
</dest>
file: source.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:variable name="dest" select='document("dest.xml")'/>
<xsl:template match="/">
<xsl:element name="mapping">
<xsl:apply-templates select="source"/>
</xsl:element>
</xsl:template>
<xsl:template match="source">
<xsl:element name="source" >
<xsl:attribute name="href">source.xml</xsl:attribute>
</xsl:element>
<xsl:element name="dest" >
<xsl:attribute name="href">dest.xml</xsl:attribute>
</xsl:element>
<xsl:for-each select="value">
<xsl:variable name="ipos" select="position()"/>
<xsl:element name="assign" >
<xsl:attribute name="source">
<xsl:value-of select="."/>
</xsl:attribute>
<xsl:attribute name="dest">
<xsl:value-of select="$dest/dest/question[position()=$ipos]"/>
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
--- Jeff Rafter <jeffrafter@earthlink.net> wrote:
> Sorry for the vague subject-- I have been searching for a simple way to load
> data from one XML file into another and haven't found exactly what I am
> looking for. What I want to do is load an XML file with data values
> (source) and load an XML file with some content (dest) and then move
> contents from source to dest. I would like to create a third "mapping" file
> that specifies how to move the data from one to the other, most likely using
> XPath. The following is a simplified example of what I am looking for
>
> source.xml
> =======
> <source>
> <value1>10</value1>
> </source>
>
> dest.xml
> ======
> <dest>
> <question>Five plus five equals?</question>
> <answer name="value1"></answer>
> </dest>
>
> mapping.xml
> =========
> <mapping>
> <source href="source.xml"/>
> <dest href="dest.xml"/>
> <assign source="source/value1" dest="dest/answer[@name='value1']">
> </mapping>
>
> I know it is most likely possible using XSLT but I haven't figured out how
> to do it without copying the whole destination document-- which seems like
> overkill when I only want to change a few nodes. Is XSLT the answer? Anyone
> have any ideas?
>
> Thanks in advance,
> Jeff Rafter
>
>
> ------------------------------------------------------------------
> The xml-dev list is sponsored by XML.org, an initiative of OASIS
> <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To unsubscribe from this elist send a message with the single word
> "unsubscribe" in the body to: xml-dev-request@lists.xml.org
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/