This is a bit clunky but assuming your source data is in source.xml
<?xml version="1.0"?>
<doc>
<graphic picfile="I970106058X_bulb"/>
<graphic picfile="I970106058X_dummy"/>
</doc>
and your filelist is in filelist.xml
<?xml version="1.0"?>
<files>
<file>./970106058X_c01_0002.tif</file>
<file>./970106058X_c01_0001.tif</file>
<file>./970106058X_bulb.tif</file>
<file>./970106058X_0000.tif</file>
<file>./970106058X_c01_0003.tif</file>
</files>
Then this seems to work.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="files" select="document('filelist.xml')"/>
<xsl:template match="/">
<doc>
<xsl:apply-templates/>
</doc>
</xsl:template>
<xsl:template match="graphic">
<xsl:variable name="file"
select="substring-after(concat(@picfile,'.tif'),'I')"/>
<node picfile="{(_at_)picfile}">
<xsl:attribute name="matched">
<xsl:choose>
<xsl:when test="$files/files/file[contains(.,$file)]">
<xsl:value-of select="true()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="false()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</node>
</xsl:template>
</xsl:stylesheet>
peter(_at_)radish:~/xxx$ xsltproc process.xsl source.xml
<?xml version="1.0"?>
<doc>
<node picfile="I970106058X_bulb" matched="true"/>
<node picfile="I970106058X_dummy" matched="false"/>
</doc>
peter(_at_)radish:~/xxx$
The $files/files/file[contains(.,$file)] does not seem to want to be
converted into a boolean and I couldn't construct a way of getting it to
match.
There has got to be a better way!
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--