Re: [xsl] Convert 2 xml with 1 xsl file

Subject: Re: [xsl] Convert 2 xml with 1 xsl file
From: António Mota <xptm@xxxxxxx>
Date: Fri, 10 Dec 2004 18:21:13 +0000
E am Marcelo, tudo em cima?

<xsl:apply-templates> doesn't work because you have no templates to apply!
And
even if you example work (besides the apply-template) it's not good writen.
Instead of a for-each, place the code in template that take care of you
catalog/cd, and write another one to take care of your teste.xml/cd. Then yoy
have templates to apply to. Look at the code below.


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th align="left">Title</th>
        <th align="left">Artist</th>
      </tr>
      <xsl:apply-templates select="catalog/cd"/>
      <xsl:apply-templates select="document('teste.xml')/cd"/>
  </table>
  </body>
  </html>
</xsl:template>

<xsl:template match="catalog/cd">
      <tr>
        <td><xsl:value-of select="title" /></td>
        <td><xsl:value-of select="artist" /></td>
      </tr>
</xsl:template>
<xsl:template match="cd">
      <tr>
        <td><xsl:value-of select="title" /></td>
        <td><xsl:value-of select="artist" /></td>
      </tr>
</xsl:template>

</xsl:stylesheet>



Um abrago ca deste lado...




Quoting Marcelo <marcelochyna@xxxxxxxxxxxx>:

> Hi Again! I did what you said but I can't make it
> work. What am I doing wrong?
>
> Here is my files:
>
>
> cdcatalog.xsl
> ****************************************************
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:template match="/">
> <xsl:apply-templates select="document('teste.xml')"/>
>   <html>
>   <body>
>     <h2>My CD Collection</h2>
>     <table border="1">
>       <tr bgcolor="#9acd32">
>         <th align="left">Title</th>
>         <th align="left">Artist</th>
>       </tr>
>       <xsl:for-each select="catalog/cd">
>       <tr>
>         <td><xsl:value-of select="title" /></td>
>         <td><xsl:value-of select="artist" /></td>
>       </tr>
>       </xsl:for-each>
>
>   </table>
>   </body>
>   </html>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> ****************************************************
> cdcatalog.xml
> ****************************************************
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <catalog>
>   <cd>
>     <title>Empire Burlesque</title>
>     <artist>Bob Dylan</artist>
>     <country>USA</country>
>     <company>Columbia</company>
>     <price>10.90</price>
>     <year>1985</year>
>   </cd>
> </catalog>
>
>
> ****************************************************
> teste.xml
> ****************************************************
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> 	<cd>
> <title>Hide your heart</title>
> <artist>Bonnie Tyler</artist>
> <country>UK</country>
> <company>CBS Records</company>
> <price>9.90</price>
> <year>1988</year>
> </cd>
>
>
>
> ****************************************************
> transformador.htlm
> ****************************************************
>
> <html>
> <body>
>
> <script type="text/javascript">
>
> // Load XML
> var xml = new ActiveXObject("Microsoft.XMLDOM");
> xml.async = false;
> xml.load("cdcatalog.xml");
>
> // Load XSL
> var xsl = new ActiveXObject("Microsoft.XMLDOM");
> xsl.async = false;
> xsl.load("cdcatalog.xsl");
>
> // Transform
> document.write(xml.transformNode(xsl));
>
> </script>
>
> </body>
> </html>
>
> ****************************************************
>
>
>  --- JBryant@xxxxxxxxx escreveu:
> > Make that:
> >
> > <xsl:apply-templates
> > select="document('otherDocument.xml')"/>
> >
> > I was just looking at one of my own stylesheets that
> > merges two documents
> > (today's problem to solve) and noticed that I had
> > forgotten the quotation
> > marks in the message I sent to the list.
> >
> > Sorry about the extra traffic.
> >
> > Jay Bryant
> > Bryant Communication Services
> >
> >
> >
> >
> > JBryant@xxxxxxxxx
> > 12/09/2004 05:44 PM
> > Please respond to
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >
> >
> > To
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > cc
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject
> > Re: [xsl] Convert 2 xml with 1 xsl file
> >
> >
> >
> >
> >
> >
> > I can't speak to the Java part of it, but the
> > document function can solve
> > the convert two (or n) files from a single
> > stylesheet problem. The
> > following instruction pulls in the content of
> > another document and
> > processes it:
> >
> > <xsl:apply-templates
> > select="document(otherDocument)"/>
> >
> > Jay Bryant
> > Bryant Communication Services
> >
> >
> >
> >
> > Marcelo <marcelochyna@xxxxxxxxxxxx>
> > 12/09/2004 08:30 PM
> > Please respond to
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >
> >
> > To
> > xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > cc
> >
> > Subject
> > [xsl] Convert 2 xml with 1 xsl file
> >
> >
> >
> >
> >
> >
> > Hi! May anybody help me? I need to convert 2 xml
> > with
> > 1 xsl file to a XHTML file. How do I do that?
> >
> > Besides that. Does anybody knows Java? Because I
> > need
> > to do this convertion within it.
> >
> > My code converts 1 xml with 1 xsl file. But how can
> > I
> > do with 2 xml)
> >
> > Thanks.
> >
> > Marcelo.
> >
> >
> > This is my code:
> >
> > ***************************************************
> >
> >
> > public static void xsl(
> >                                  String xml1,
> >                                  String xml2,
> >                                  String outFilename,
> >                                  String xslFilename)
> > {
> >                                  try {
> >                                                  //
> > Create transformer
> > factory
> >
> > TransformerFactory
> > factory =
> > TransformerFactory.newInstance();
> >
> >                                                  //
> > Use the factory to
> > create a template containing
> > the xsl file
> >
> > Templates template =
> >  factory.newTemplates(
> >   new StreamSource(new
> > FileInputStream(xslFilename)));
> >
> >                                                  //
> > Use the template to
> > create a transformer
> >
> > Transformer xformer =
> > template.newTransformer();
> >
> >
> > InputStream in = new
> > URL(xml1).openStream();
> >                                  //
> > StringBuffer s = new
> > StringBuffer();
> >
> >  System.out.println(in.toString());
> >
> > Source source = new
> > StreamSource(in);
> >
> > //Source source = new
> > StreamSource(new
> > FileInputStream(inFilename));
> >
> > Result result = new
> > StreamResult(new
> > FileOutputStream(outFilename));
> >
> >                                                  //
> > Apply the xsl file to
> > the source file and write
> > the result to the output file
> >
> > xformer.transform(source,
> >
> > result);
> >                                  } catch
> > (FileNotFoundException e) {
> >  System.out.println("FileNotFoundException ");
> >
> > e.printStackTrace();
> >                                  } catch
> > (TransformerConfigurationException e) {
> >
> >
> System.out.println("TransformerConfigurationException
> > ");
> >
> > e.printStackTrace();
> >                                                  //
> > An error occurred in
> > the XSL file
> >                                  } catch
> > (TransformerException e) {
> >  System.out.println("TransformerException ");
> >                                                  //
> > An error occurred
> > while applying the XSL file
> >                                                  //
> > Get location of error
> > in input file
> >
> > SourceLocator locator =
> > e.getLocator();
> >                                                  int
> > col =
> > locator.getColumnNumber();
> >                                                  int
> > line =
> > locator.getLineNumber();
> >
> > String publicId =
> > locator.getPublicId();
> >
> > String systemId =
> > locator.getSystemId();
> >
> > e.printStackTrace();
> >                                  } catch
> > (MalformedURLException e) {
> >                                                  //
> > TODO Auto-generated
> > catch block
> >
> > e.printStackTrace();
> >
> === message truncated ===
>
> __________________________________________________
> Converse com seus amigos em tempo real com o Yahoo! Messenger
> http://br.download.yahoo.com/messenger/
>
>





O SAPO ja esta livre de vmrus com a Panda Software, fique vocj tambim!
Clique em: http://antivirus.sapo.pt

Current Thread