Re: [xsl] Processing multiple documents

Subject: Re: [xsl] Processing multiple documents
From: "bryan rasmussen" <rasmussen.bryan@xxxxxxxxx>
Date: Sat, 1 Mar 2008 09:30:43 +0100
<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

Current Thread