Subject: Re: [xsl] Processing multiple documents From: "Sean Tiley" <sean.tiley@xxxxxxxxx> Date: Sat, 1 Mar 2008 06:48:52 -0500 |
Thanks Brian. I can now get the processor to process multiple documents. I was playing around a bit with one of my templates and am seeing behavior I can not understand. I have defined 2 variables <xsl:variable name="doc2" select="document('TestScript2.xml')"/> <xsl:variable name="wordposition" select="/w:wordDocument/w:body/wx:sect/wx:sub-section/w:tbl[w:tr/w:tc/w:p/w:r/w:t = 'Test Case ID #']"/> If I modify the following template <xsl:template match="@* | node()" > <xsl:copy> <xsl:apply-templates select="/w:wordDocument/w:body/wx:sect/wx:sub-section/w:tbl[w:tr/w:tc/w:p/w:r/w:t = 'Test Case ID #']"/> <xsl:apply-templates select="$doc2/w:wordDocument/w:body/wx:sect/wx:sub-section/w:tbl[w:tr/w:tc/w:p/w:r/w:t = 'Test Case ID #']"/> </xsl:template> I get my expected results <w:wordDocument> <testresults testfile="TestScript.xml"> <TestCase TestID="TC-01" result="Pass" DateExecuted="2008.02.27" CriticalIndicator="Y"/> etc... </testresults> <testresults testfile="TestScript2.xml"> <TestCase TestID="TC-01" result="DR 1" DateExecuted="2008.02.29" CriticalIndicator="Y"/> etc... </testresults> </w:wordDocument> Both files are getting successfully processed and included If I change my template to read (using the declared variables) <xsl:template match="@* | node()" > <xsl:copy> <xsl:apply-templates select="$wordposition"/> <xsl:apply-templates select="$doc2/$wordposition"/> </xsl:copy> </xsl:template> I get results as follows <w:wordDocument> <testresults testfile="TestScript.xml"> <TestCase TestID="TC-01" result="Pass" DateExecuted="2008.02.27" CriticalIndicator="Y"/> etc... </testresults> <testresults testfile="TestScript.xml"> <TestCase TestID="TC-01" result="Pass" DateExecuted="2008.02.27" CriticalIndicator="Y"/> etc... </testresults> </w:wordDocument> It appears that the first file TestScript.xml is processed twice while the second is not. Why might that be? Thank you. Sean On Sat, Mar 1, 2008 at 3:30 AM, bryan rasmussen <rasmussen.bryan@xxxxxxxxx> wrote: > <xsl:apply-templates select="$doc2/xpath follows here"/> > > Cheers, > Bryan Rasmussen > > On Fri, Feb 29, 2008 at 9:38 PM, Sean Tiley <sean.tiley@xxxxxxxxx> wrote: > > Hello, > > I created a XSL 2.0 stylesheet that processes a MS Word document > > (saved in xml format). > > > > Basically I am extracting information,(test case results), from a > > table in the document to create xml output in the following format > > > > <?xml version="1.0" encoding="UTF-8"?> > > <?mso-application progid="Word.Document"?> > > <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" > > xmlns:v="urn:schemas-microsoft-com:vml" > > xmlns:w10="urn:schemas-microsoft-com:office:word" > > xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" > > xmlns:aml="http://schemas.microsoft.com/aml/2001/core" > > xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" > > xmlns:o="urn:schemas-microsoft-com:office:office" > > xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" > > xmlns:st1="urn:schemas-microsoft-com:office:smarttags"> > > <testresults testfile="TestScript.xml"> > > <TestCase TestID="TC-01" result="Pass" DateExecuted="2008.02.27" > > CriticalIndicator="Y"/> > > <TestCase TestID="TC-02" result="Pass" DateExecuted="2008.02.27" > > CriticalIndicator="Y"/> > > <TestCase TestID="TC-03" result="Pass" DateExecuted="2008.02.27" > > CriticalIndicator="N"/> > > <TestCase TestID="TC-04" result="Pass" DateExecuted="2008.02.27" > > CriticalIndicator="N"/> > > <TestCase TestID="TC-05" result="Pass" DateExecuted="2008.02.27" > > CriticalIndicator="N"/> > > </testresults> > > </w:wordDocument> > > > > > > > > My stylesheet is as follows. > > > > <?xml version="1.0" encoding="UTF-8"?> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" > > xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" > > xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"> > > <xsl:output method="xml" indent="yes" /> > > > > <!-- Main template--> > > <xsl:template > > match="/w:wordDocument/w:body/wx:sect/wx:sub-section/w:tbl[w:tr/w:tc/w:p/w:r/w:t > > = 'Test Case ID #']"> > > <xsl:element name="testresults"> > > <xsl:attribute name="testfile" > > > <xsl:value-of select ="tokenize(document-uri(/), '/')[last()]"/> > > </xsl:attribute> > > <xsl:for-each select="w:tr"> > > <xsl:choose> > > <!-- Only process rows with a test case id. They > > begin with TC- --> > > <xsl:when test="w:tc/w:p/w:r[starts-with(w:t,'TC-')]"> > > <xsl:element name="TestCase"> > > <xsl:attribute name="TestID"> > > <xsl:value-of select="w:tc[1]/w:p/w:r/w:t"/> > > </xsl:attribute> > > <xsl:attribute name="result"> > > <xsl:value-of select="w:tc[6]/w:p/w:r/w:t"/> > > </xsl:attribute> > > <xsl:attribute name="DateExecuted"> > > <xsl:value-of select="w:tc[5]/w:p/w:r/w:t"/> > > </xsl:attribute> > > <xsl:attribute name="CriticalIndicator"> > > <xsl:value-of select="w:tc[7]/w:p/w:r/w:t"/> > > </xsl:attribute> > > </xsl:element> > > </xsl:when> > > <xsl:otherwise/> > > </xsl:choose> > > </xsl:for-each> > > </xsl:element> > > </xsl:template> > > > > <!-- If this is not here I get alot of additional info I do not want--> > > <xsl:template match="@* | node()"> > > <xsl:copy> > > <xsl:apply-templates > > select="/w:wordDocument/w:body/wx:sect/wx:sub-section/w:tbl[w:tr/w:tc/w:p/w:r/w:t > > = 'Test Case ID #']"/> > > </xsl:copy> > > </xsl:template> > > </xsl:stylesheet> > > > > > > All this works fine. > > My issue now is that I want to process multiple documents and merge in > > <TestCase/> elements from another test result document. > > > > I know there is the document() function that I can use like the following > > <xsl:variable name="doc2" select="document('another.file.xml') > > > > But I am at a loss as to how to tell the processor to apply the > > template to that doc as well. > > > > Once I figure that out, I would like to be able to generalize this to > > process 1 to N documents in a given directory. > > > > Any guidance is greatly appreciated > > > > -- > > Sean Tiley > > sean.tiley@xxxxxxxxx > > -- Sean Tiley sean.tiley@xxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Processing multiple docum, bryan rasmussen | Thread | Re: [xsl] Processing multiple docum, Florent Georges |
Re: [xsl] Processing multiple docum, bryan rasmussen | Date | Re: [xsl] Processing multiple docum, Florent Georges |
Month |