[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Checking external files based on the attribute val
Hi Ganesh, There are a few problems with your expression... The predicate is: contains(.,substring-after(concat(@picfile,'.tif'),'I')) Note: There is no @picfile attribute in the document('filelist.xml')/files/file elements... so concat(@picfile,'.tif') is going to just return '.tif'. I don't think you need boolean() I am assuming your are running the XSL with <graphic picfile="I970106058X_bulb"/> in your input XML. I am not sure the context you are calling the expression that checks for the presence of the slightly modified @picfile value in filelist.xml... So the following is a guess along with a suggested new expression: <xsl:for-each select="//graphic/@picfile"/> <xsl:variable name="Currentpicfile" select="."/> <xsl:choose> <xsl:when test="document('filelist.xml')/files/file[contains(.,substring-after(concat($Currentpicfile,'.tif'),'I'))]"> Good </xsl:when> <xsl:otherwise> Bad </xsl:otherwise> </xsl:choose> </xsl:for-each> Note: This type of check is what Schematron is excellent at... <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://purl.oclc.org/dsdl/schematron" xmlns:iso="http://purl.oclc.org/dsdl/schematron" schemaVersion="Test1.0"> <title>Example</title> <let name="RVPStructure" value="doc(concat($RVPDITABranchHomeURL,'/wbs_precompose/ExpandedRVPStructure.xml'))"/> <pattern id="GeneralExecutionSteps.Checks"> <title>Example Pattern</title> <rule context="//graphic/@picfile"> <let name="Currentpicfile" value="."/> <assert test="document('filelist.xml')/files/file[contains(.,substring-after(concat($Currentpicfile,'.tif'),'I'))]">Error @picfile="<value-of select="."/>" does not exist in filelist.xml</assert> </rule> </pattern> </schema> Darcy On Wed, Aug 13, 2008 at 9:12 AM, Ganesh Babu N <nbabuganesh@xxxxxxxxx> wrote: > > Dear All, > > I am having an XML file in which I am having the following coding > > <graphic picfile="I970106058X_bulb"/> > > All the graphic filenames are stored in a separate XML file the contents are: > > filelist.xml > > <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> > > > Now my task is to search the filelist.xml for @picfile value and if it > is not found raise an error. > I am using the following code: > > boolean(document('filelist.xml')/files/file[contains(., > substring-after(concat(@picfile,'.tif'),'I'))] ) > > But i am not getting any message. Please help me how to achieve this task. > > Regards, > Ganesh
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|