[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Search In Multiple Files


Subject: RE: [xsl] Search In Multiple Files
From: "Jimenez, Luis" <Luis.Jimenez@xxxxxxxxx>
Date: Tue, 30 Nov 2010 23:20:56 -0500

Thanks Hermann,

Work well.

Greetings,

Luis Fdo.

-----Mensaje original-----
De: Hermann Stamm-Wilbrandt [mailto:STAMMW@xxxxxxxxxx]
Enviado el: Martes, 30 de Noviembre de 2010 07:41 a.m.
Para: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Asunto: Re: [xsl] Search In Multiple Files

Hi.

find below the stylesheet plus "verification" of output.

$ cat codes.xsl
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output encoding="ISO-8859-1" />

  <xsl:variable name="codes"><c>123</c><c>456</c></xsl:variable>

  <xsl:template match="/">
    <spool>
    <xsl:for-each select="
      (document('File1.xml')|document('File2.xml')|document('File3.xml'))
      /spool
      /pd[fact/cab/code[.=document('')/*/xsl:variable[@name='codes']/c]]
    ">
      <xsl:copy>
        <xsl:copy-of select="@*"/>
        <xsl:copy-of select="fact"/>
        <xsl:copy-of select="document"/>
      </xsl:copy>
    </xsl:for-each>
    </spool>
  </xsl:template>

</xsl:stylesheet>
$
$ xsltproc codes.xsl codes.xsl >out.xml
$ tidy -q -xml out.xml >out.tidy
$ tidy -q -xml target.xml >target.tidy
$ diff out.tidy target.tidy
$


Mit besten Gruessen / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294



From:       "Jimenez, Luis" <Luis.Jimenez@xxxxxxxxx>
To:         <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Date:       11/30/2010 05:28 AM
Subject:    [xsl] Search In Multiple Files



Hi All,

as I can find several codes in different files and having an output with
the results with a single XSL.

i.e:

codes to search: 123 and 456

Tag to search for previous codes: fact and document

XSLT 1.0

File 1.xml:

<?xml version="1.0" encoding="iso-8859-1"?> <spool>
  <pd>
    <fact>
      <cab>
        <name>Luis</name>
        <code>123</code>
      </cab>
      <details/>
    </fact>
    <pica>
      <box>1</box>
    </pica>
    <document>
      <number>1</number>
    </document>
 </pd>
 <pd ps="1">
   <fact>
     <cab>
       <name>Juan</name>
       <code>456</code>
     </cab>
     <details/>
   </fact>
   <pica>
     <box>2</box>
   </pica>
   <document>
      <number>2</number>
   </document>
 </pd>
</spool>

File 2.xml:

<?xml version="1.0" encoding="iso-8859-1"?> <spool>
  <pd>
    <fact>
      <cab>
        <name>Luis</name>
        <code>123</code>
      </cab>
      <details/>
    </fact>
    <pica>
      <box>3</box>
    </pica>
    <document>
      <number>3</number>
    </document>
 </pd>
 <pd ps="1">
   <fact>
     <cab>
       <name>Ernesto</name>
       <code>789</code>
     </cab>
     <details/>
   </fact>
   <pica>
     <box>4</box>
   </pica>
   <document>
     <number>4</number>
   </document>

 </pd>
</spool>

File 3.xml:

<?xml version="1.0" encoding="iso-8859-1"?> <spool>
  <pd>
    <fact>
      <cab>
        <name>Valery</name>
        <code>789</code>
      </cab>
      <details/>
    </fact>
    <pica>
      <box>6</box>
    </pica>
    <document>
      <number>5</number>
    </document>
 </pd>
 <pd ps="1">
   <fact>
     <cab>
       <name>Juan</name>
       <code>456</code>
     </cab>
     <details/>
   </fact>
   <pica>
     <box>9</box>
   </pica>
   <document>
     <number>6</number>
   </document>
 </pd>
</spool>

Desired Output h Codes: 123 and 456 with only Tag fact and document:

<?xml version="1.0" encoding="iso-8859-1"?> <spool>  <pd>
    <fact>
      <cab>
        <name>Luis</name>
        <code>123</code>
      </cab>
      <details/>
    </fact>
    <document>
      <number>1</number>
    </document>
</pd>
<pd ps="1">
   <fact>
     <cab>
       <name>Juan</name>
       <code>456</code>
     </cab>
     <details/>
   </fact>
   <document>
      <number>2</number>
   </document>
 </pd>
<pd>
    <fact>
      <cab>
        <name>Luis</name>
        <code>123</code>
      </cab>
      <details/>
    </fact>
    <document>
      <number>3</number>
    </document>
 </pd>
<pd ps="1">
   <fact>
     <cab>
       <name>Juan</name>
       <code>456</code>
     </cab>
     <details/>
   </fact>
   <document>
     <number>6</number>
   </document>
 </pd>
</spool>

Thanks for the help.

Luis Fdo.


Current Thread
Keywords