<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJSP%2FXML</id>
		<title>Java/JSP/XML - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJSP%2FXML"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JSP/XML&amp;action=history"/>
		<updated>2026-04-15T09:06:45Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/JSP/XML&amp;diff=8713&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JSP/XML&amp;diff=8713&amp;oldid=prev"/>
				<updated>2010-06-01T07:10:52Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:10, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java/JSP/XML&amp;diff=8712&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java/JSP/XML&amp;diff=8712&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Deal With XML In JSP ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP and SAX ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;javax.xml.parsers.SAXParserFactory,&lt;br /&gt;
                 javax.xml.parsers.SAXParser,&lt;br /&gt;
                 com.jexp.MyHandler&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;JSP and SAX&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
      SAXParserFactory factory   = SAXParserFactory.newInstance();&lt;br /&gt;
      SAXParser        parser    = factory.newSAXParser();&lt;br /&gt;
      MyHandler        myHandler = new MyHandler(out);&lt;br /&gt;
      parser.parse(&amp;quot;http://localhost:8080/chapter10/people.xml&amp;quot;,&lt;br /&gt;
                   myHandler);&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
package com.jexp;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.servlet.jsp.JspWriter;&lt;br /&gt;
import org.xml.sax.Attributes;&lt;br /&gt;
import org.xml.sax.SAXException;&lt;br /&gt;
import org.xml.sax.helpers.DefaultHandler;&lt;br /&gt;
public class MyHandler extends DefaultHandler&lt;br /&gt;
{&lt;br /&gt;
  private int       stepCount, totalAge;&lt;br /&gt;
  private JspWriter out;&lt;br /&gt;
  private boolean   insideAgeElement;&lt;br /&gt;
  &lt;br /&gt;
  public MyHandler(JspWriter out)&lt;br /&gt;
  {&lt;br /&gt;
    this.out = out;&lt;br /&gt;
  }&lt;br /&gt;
  public void startDocument() throws SAXException&lt;br /&gt;
  {&lt;br /&gt;
    try &lt;br /&gt;
    {&lt;br /&gt;
      out.write(++stepCount + &amp;quot;. Start of document&amp;lt;br&amp;gt;&amp;quot;);      &lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) &lt;br /&gt;
    {&lt;br /&gt;
      throw new SAXException(e);&lt;br /&gt;
    }    &lt;br /&gt;
  } // end of startDocument()&lt;br /&gt;
  public void endDocument() throws SAXException&lt;br /&gt;
  {&lt;br /&gt;
    try &lt;br /&gt;
    {&lt;br /&gt;
      out.write(++stepCount + &amp;quot;. End of document&amp;lt;p&amp;gt;&amp;quot;);&lt;br /&gt;
      out.write(&amp;quot;The total of all ages in the XML document is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;&amp;quot;&lt;br /&gt;
                + totalAge + &amp;quot;&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) &lt;br /&gt;
    {&lt;br /&gt;
      throw new SAXException(e);&lt;br /&gt;
    }    &lt;br /&gt;
  } // end of endDocument()&lt;br /&gt;
  public void startElement(String namespaceURI, String localName,&lt;br /&gt;
                           String qName, Attributes attrs)&lt;br /&gt;
      throws SAXException&lt;br /&gt;
  {&lt;br /&gt;
    if ( qName.equals(&amp;quot;age&amp;quot;)) &lt;br /&gt;
    {&lt;br /&gt;
      insideAgeElement = true;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    try &lt;br /&gt;
    {&lt;br /&gt;
      out.write(++stepCount + &amp;quot;. Start of element: &amp;lt;b&amp;gt;&amp;quot; + qName + &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
      int numberOfAttributes = attrs.getLength();&lt;br /&gt;
      if ( numberOfAttributes &amp;gt; 0 ) &lt;br /&gt;
      {&lt;br /&gt;
        out.write(&amp;quot;. Attributes: &amp;lt;ul&amp;gt;&amp;quot;);&lt;br /&gt;
      } // end of if ()&lt;br /&gt;
      else &lt;br /&gt;
        out.write(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
      &lt;br /&gt;
      for ( int i=0; i&amp;lt;numberOfAttributes; i++) &lt;br /&gt;
      {&lt;br /&gt;
        out.write(&amp;quot;&amp;lt;li&amp;gt;&amp;quot; + attrs.getQName(i) + &amp;quot; = &amp;quot;&lt;br /&gt;
                  + attrs.getValue(i) + &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;);&lt;br /&gt;
      } // end of for ()&lt;br /&gt;
        &lt;br /&gt;
      if ( numberOfAttributes &amp;gt; 0 ) &lt;br /&gt;
      {&lt;br /&gt;
        out.write(&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) &lt;br /&gt;
    {&lt;br /&gt;
      throw new SAXException(e);&lt;br /&gt;
    }    &lt;br /&gt;
  } // end of startElement()&lt;br /&gt;
  public void endElement(String namespaceURI, String localName, String qName)&lt;br /&gt;
      throws SAXException&lt;br /&gt;
  {&lt;br /&gt;
    if ( qName.equals(&amp;quot;age&amp;quot;) ) &lt;br /&gt;
    {&lt;br /&gt;
      insideAgeElement = false;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    try &lt;br /&gt;
    {&lt;br /&gt;
      out.write(++stepCount + &amp;quot;. End of element &amp;lt;b&amp;gt;&amp;quot; + qName + &amp;quot;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);      &lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) &lt;br /&gt;
    {&lt;br /&gt;
      throw new SAXException(e);&lt;br /&gt;
    } // end of try-catch&lt;br /&gt;
    &lt;br /&gt;
  } // end of endElement()&lt;br /&gt;
  public void characters(char[] chars, int start, int length) throws SAXException&lt;br /&gt;
  {&lt;br /&gt;
    String content = new String(chars, start, length);&lt;br /&gt;
    if ( insideAgeElement ) &lt;br /&gt;
    {&lt;br /&gt;
      int age  =  Integer.parseInt(content);&lt;br /&gt;
      totalAge += age;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    try &lt;br /&gt;
    {&lt;br /&gt;
      out.write(++stepCount + &amp;quot;. Character content = &amp;quot;);&lt;br /&gt;
      if ( length &amp;gt; 0 ) &lt;br /&gt;
        out.write(&amp;quot;&amp;lt;b&amp;gt;&amp;quot; + content + &amp;quot;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    catch (IOException e) &lt;br /&gt;
    {&lt;br /&gt;
      throw new SAXException(e);&lt;br /&gt;
    } // end of try-catch&lt;br /&gt;
    &lt;br /&gt;
  } // end of characters()&lt;br /&gt;
} // end of class MyHandler&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP Displaying a Subset in XML  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;people&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Peter&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;54&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Patricia&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;50&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/people&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot;  prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html &amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Displaying a Subset&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter02/people.xml&amp;quot;&lt;br /&gt;
              var=&amp;quot;inputDoc&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;x:parse  xml = &amp;quot;${inputDoc}&amp;quot;&lt;br /&gt;
              var = &amp;quot;parsedDoc&amp;quot; /&amp;gt;&lt;br /&gt;
    Here is a list of people over the age of 45:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;x:forEach select=&amp;quot;$parsedDoc/people/person/name[../age &amp;gt; 45]&amp;quot;&lt;br /&gt;
                 var=&amp;quot;currentName&amp;quot; &amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;x:out select=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/x:forEach&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP in pure XML generating conforming XHTML ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;jsp:root xmlns:jsp=&amp;quot;http://java.sun.ru/JSP/Page&amp;quot; version=&amp;quot;1.2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;jsp:directive.page contentType=&amp;quot;text/html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;br /&gt;
  &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;JSP in pure XML generating conforming XHTML&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;version&amp;quot;&lt;br /&gt;
    content=&amp;quot;$Id: hello-xml.jsp,v 1.3 2003/08/23 01:48:21 ian Exp $&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=iso-8859-1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Here on our farm &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
it is now &amp;lt;jsp:expression&amp;gt; new java.util.Date() &amp;lt;/jsp:expression&amp;gt;.&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/jsp:root&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP List of data in the XML document ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:transform xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;people&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;List of people in the XML document&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;person&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;name/text()&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;age/text()&amp;quot;  /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;    &lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:transform&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot;  prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Transforming a Subset&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter12/Multi-Template/people.xml&amp;quot;&lt;br /&gt;
              var=&amp;quot;inputDoc&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter12/Multi-Template/transform.xsl&amp;quot;&lt;br /&gt;
              var=&amp;quot;stylesheet&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;x:parse  xml = &amp;quot;${inputDoc}&amp;quot;&lt;br /&gt;
              var = &amp;quot;parsedDoc&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;x:set    select = &amp;quot;$parsedDoc/people/person/name[../age &amp;gt; 50]&amp;quot;&lt;br /&gt;
              var    = &amp;quot;subset&amp;quot; /&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
    &amp;lt;x:transform xml  = &amp;quot;${subset}&amp;quot;&lt;br /&gt;
                 xslt = &amp;quot;${stylesheet}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP Parsing using JDOM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;people&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joe&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;30&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Rob&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;29&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/people&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;org.jdom.Element,&lt;br /&gt;
                 org.jdom.Document,&lt;br /&gt;
                 org.jdom.input.SAXBuilder,&lt;br /&gt;
                 java.util.List,&lt;br /&gt;
                 java.util.Iterator&amp;quot;&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;!-- remember to change the url of the xml file--&amp;gt;&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
  SAXBuilder builder  = new SAXBuilder();&lt;br /&gt;
  Document   doc      = builder.build(&amp;quot;http://localhost:8080/chapter11/people.xml&amp;quot;);&lt;br /&gt;
  List       children = doc.getRootElement().getChildren(); // 2 person nodes&lt;br /&gt;
  Iterator   iter     = children.iterator();&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Parsing using JDOM&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;List of people&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%&lt;br /&gt;
        while (iter.hasNext()) // for each &amp;quot;person&amp;quot; node&lt;br /&gt;
        {&lt;br /&gt;
          Element  currentItem = (Element) iter.next();     // each &amp;quot;person&amp;quot;&lt;br /&gt;
          List     nameAndAge  = currentItem.getChildren();&lt;br /&gt;
          Iterator nameAgeIter = nameAndAge.iterator();&lt;br /&gt;
      %&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;%&lt;br /&gt;
          while ( nameAgeIter.hasNext() )&lt;br /&gt;
          {&lt;br /&gt;
            Element child = (Element) nameAgeIter.next(); // &amp;quot;name&amp;quot; or &amp;quot;age&amp;quot;&lt;br /&gt;
      %&amp;gt;       &lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;%= child.getText() %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      %&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP Parsing using the DOM ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;people&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joe&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;30&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Rob&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;29&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/people&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;%@page import=&amp;quot;org.w3c.dom.Node, org.w3c.dom.Element, org.w3c.dom.Document, org.w3c.dom.NodeList, javax.xml.parsers.DocumentBuilder, javax.xml.parsers.DocumentBuilderFactory&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%!&lt;br /&gt;
  public boolean isTextNode(Node n)&lt;br /&gt;
  {&lt;br /&gt;
    return n.getNodeName().equals(&amp;quot;#text&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Parsing using the DOM&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();&lt;br /&gt;
      DocumentBuilder        builder = factory.newDocumentBuilder();&lt;br /&gt;
      Document doc = builder.parse(&amp;quot;http://localhost:8080/chapter02/people.xml&amp;quot;);&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;List of people&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
      Element  root        = doc.getDocumentElement(); // &amp;quot;people&amp;quot; node&lt;br /&gt;
      NodeList personNodes = root.getChildNodes();     // 2 &amp;quot;person&amp;quot; nodes&lt;br /&gt;
      for (int i=0; i&amp;lt;personNodes.getLength(); i++)&lt;br /&gt;
      {&lt;br /&gt;
        Node currentPerson = personNodes.item(i);&lt;br /&gt;
        if (isTextNode(currentPerson)) // skip whitespace node&lt;br /&gt;
          continue;&lt;br /&gt;
        NodeList nameAndAge = currentPerson.getChildNodes(); // &amp;quot;name&amp;quot; and &amp;quot;age&amp;quot; nodes&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
        for (int j=0; j&amp;lt;nameAndAge.getLength(); j++ )&lt;br /&gt;
        {&lt;br /&gt;
          Node currentItem = nameAndAge.item(j);&lt;br /&gt;
          if ( isTextNode(currentItem)) &lt;br /&gt;
            continue;&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= currentItem.getFirstChild().getNodeValue() %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
        } // end of name &amp;amp; age loop&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;%&lt;br /&gt;
      } // end person loop&lt;br /&gt;
    %&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP Parsing using the DOM and JSTL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;people&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Joe&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;30&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Rob&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;29&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/people&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot;  prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Parsing using the DOM and JSTL&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter11/people.xml&amp;quot;&lt;br /&gt;
              var=&amp;quot;personXml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;x:parse xml=&amp;quot;${personXml}&amp;quot; varDom=&amp;quot;parsedXml&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;List of people&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;x:forEach select=&amp;quot;$parsedXml/people/person&amp;quot; var=&amp;quot;currentPerson&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;x:forEach select=&amp;quot;*&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;x:out select=&amp;quot;.&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/x:forEach&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/x:forEach&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JSP XML and XSLT transform ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;people&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Peter&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;54&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
  &amp;lt;person&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;Patricia&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;age&amp;gt;50&amp;lt;/age&amp;gt;&lt;br /&gt;
  &amp;lt;/person&amp;gt;&lt;br /&gt;
&amp;lt;/people&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
//globalParam.xsl&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;xsl:transform xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:param name=&amp;quot;ageParam&amp;quot;&amp;gt;60&amp;lt;/xsl:param&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;people&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;List of people in the XML document&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Age&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template match=&amp;quot;person&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:call-template name=&amp;quot;processPerson&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:with-param name=&amp;quot;ageParam&amp;quot;&amp;gt;&lt;br /&gt;
        51&lt;br /&gt;
      &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:template name=&amp;quot;processPerson&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- &amp;lt;xsl:param name=&amp;quot;ageParam&amp;quot; /&amp;gt; --&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;name/text()&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;age/text()&amp;quot;  /&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:if test=&amp;quot;age/text() &amp;gt; $ageParam&amp;quot;&amp;gt;&lt;br /&gt;
            (old!)&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;    &lt;br /&gt;
  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:transform&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot;  prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html &amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Using a Named Template with Global Parameters&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter02/people.xml&amp;quot;&lt;br /&gt;
              var=&amp;quot;inputDoc&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;c:import url=&amp;quot;http://localhost:8080/chapter02/globalParam.xsl&amp;quot;&lt;br /&gt;
              var=&amp;quot;stylesheet&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;x:transform xml  = &amp;quot;${inputDoc}&amp;quot;&lt;br /&gt;
                 xslt = &amp;quot;${stylesheet}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;x:param name=&amp;quot;ageParam&amp;quot;  value=&amp;quot;49&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/x:transform&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Performing XSL Transformations ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ page language=&amp;quot;java&amp;quot; contentType=&amp;quot;text/html&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ page pageEncoding=&amp;quot;UTF-8&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;javax.xml.transform.*&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;javax.xml.transform.stream.*&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Customer Orders&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;Customer Orders&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%! String FS = System.getProperty(&amp;quot;file.separator&amp;quot;); %&amp;gt;&lt;br /&gt;
        &amp;lt;%&lt;br /&gt;
        String xmlFile = request.getParameter(&amp;quot;XML&amp;quot;);&lt;br /&gt;
        String xslFile = request.getParameter(&amp;quot;XSL&amp;quot;);&lt;br /&gt;
        String ctx = getServletContext().getRealPath(&amp;quot;&amp;quot;) + FS;&lt;br /&gt;
        xslFile = ctx + xslFile;&lt;br /&gt;
        xmlFile = ctx + xmlFile;&lt;br /&gt;
        TransformerFactory tFactory = TransformerFactory.newInstance();&lt;br /&gt;
        Transformer transformer = tFactory.newTransformer(new StreamSource(xslFile));&lt;br /&gt;
        transformer.transform(new StreamSource(xmlFile), new StreamResult(out));&lt;br /&gt;
        %&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using the Core XML tags ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot; prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Using the Core XML tags&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Here are the context-params and servlets from the XML file&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;c:import url=&amp;quot;http://localhost:8080/home/web.xml&amp;quot; var=&amp;quot;webXml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;x:parse xml=&amp;quot;${webXml}&amp;quot; var=&amp;quot;doc&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;First the context params...&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;x:forEach select=&amp;quot;$doc//context-param&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;x:out select=&amp;quot;param-name&amp;quot;/&amp;gt;: &amp;lt;x:out select=&amp;quot;param-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/x:forEach&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Now the servlet info...&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;x:forEach select=&amp;quot;$doc//servlet&amp;gt;&lt;br /&gt;
    &amp;lt;x:out select=&amp;quot;servlet-name&amp;quot;/&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
  &amp;lt;x:out select=&amp;quot;servlet-class&amp;quot;/&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/x:forEach&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== XML transformation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/xml&amp;quot; prefix=&amp;quot;x&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ taglib uri=&amp;quot;http://java.sun.ru/jstl/core&amp;quot; prefix=&amp;quot;c&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;c:import url=&amp;quot;http://localhost:8080/home/build.xml&amp;quot; var=&amp;quot;buildXml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;c:import url=&amp;quot;/WEB-INF/xslt/myTrans.xsl&amp;quot; var=&amp;quot;xslt&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;x:transform xml=&amp;quot;${buildXml}&amp;quot; xslt=&amp;quot;${xslt}&amp;quot; /&amp;gt;&lt;br /&gt;
//myTrans.xsl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:output method=&amp;quot;html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;List of build.xml targets&lt;br /&gt;
    &amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body bgcolor=&amp;quot;white&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;Build.xml targets&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/project&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:for-each select=&amp;quot;./target&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dt&amp;gt;&amp;lt;b&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt;&amp;lt;/b&amp;gt;&amp;amp;#xA0;&amp;lt;/dt&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:if test=&amp;quot;@depends&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;dd&amp;gt;depends=&amp;lt;xsl:value-of select=&amp;quot;@depends&amp;quot; /&amp;gt;&amp;amp;#xA0;&amp;lt;/dd&amp;gt;&amp;lt;/xsl:if&amp;gt;        &lt;br /&gt;
    &amp;lt;/xsl:for-each&amp;gt;&amp;lt;!--end for-each contact --&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;text()&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:value-of select=&amp;quot;normalize-space()&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== XSLT In JSP ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
  Java, XML, and Web Services Bible&lt;br /&gt;
  Mike Jasnowski&lt;br /&gt;
  ISBN: 0-7645-4847-6&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt; Enter card Info&amp;lt;/H1&amp;gt;&lt;br /&gt;
&amp;lt;FORM NAME=&amp;quot;CARDINFO&amp;quot; ACTION=&amp;quot;/test/svgcard/process.jsp&amp;quot; TARGET=&amp;quot;VIEWCARD&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TABLE BORDER=&amp;quot;0&amp;quot; CELLPADDING=&amp;quot;4&amp;quot; CELLSPACING=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Card To:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;TEXT&amp;quot; SIZE=&amp;quot;20&amp;quot; NAME=&amp;quot;cardto&amp;quot;&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Card From:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;TEXT&amp;quot; SIZE=&amp;quot;20&amp;quot; NAME=&amp;quot;cardfrom&amp;quot;&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;Message:&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;TEXT&amp;quot; SIZE=&amp;quot;60&amp;quot; NAME=&amp;quot;message&amp;quot;&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD COLSPAN=&amp;quot;2&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;SUBMIT&amp;quot; VALUE=&amp;quot;PREVIEW&amp;quot;&amp;gt;&amp;lt;/TD&amp;gt;&amp;lt;TD&amp;gt;&amp;amp;nbsp;&amp;lt;/TD&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;/FORM&amp;gt;&lt;br /&gt;
&amp;lt;/HTML&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ page contentType=&amp;quot;image/svg-xml&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
String cardTo = request.getParameter(&amp;quot;cardto&amp;quot;);&lt;br /&gt;
String cardFrom = request.getParameter(&amp;quot;cardfrom&amp;quot;);&lt;br /&gt;
String message = request.getParameter(&amp;quot;message&amp;quot;);&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;400&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;g style=&amp;quot;font-family:Arial;font-size:12pt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;%= cardTo %&amp;gt;, someone has sent you a message&lt;br /&gt;
 &amp;lt;/text&amp;gt;&lt;br /&gt;
 &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;60&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;%= cardFrom %&amp;gt; would like to tell you&lt;br /&gt;
 &amp;lt;/text&amp;gt;&lt;br /&gt;
 &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;140&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;%= message %&amp;gt;&lt;br /&gt;
 &amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== XSLT in JSP 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
  Java, XML, and Web Services Bible&lt;br /&gt;
  Mike Jasnowski&lt;br /&gt;
  ISBN: 0-7645-4847-6&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;%@ page contentType=&amp;quot;image/svg-xml&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;org.xml.sax.*&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;org.apache.xalan.xslt.*&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ page import=&amp;quot;java.io.*&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
try {&lt;br /&gt;
    XSLTProcessor processor = XSLTProcessorFactory.getProcessor(); &lt;br /&gt;
       &lt;br /&gt;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();&lt;br /&gt;
    &lt;br /&gt;
    processor.process(new XSLTInputSource(&amp;quot;games.xml&amp;quot;),&lt;br /&gt;
                      new XSLTInputSource(&amp;quot;games.xsl&amp;quot;),&lt;br /&gt;
                    new XSLTResultTarget(bos));&lt;br /&gt;
    out.println(bos);&lt;br /&gt;
    &lt;br /&gt;
} catch (Exception ex) {&lt;br /&gt;
    out.println(ex);&lt;br /&gt;
}&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;games&amp;gt;&lt;br /&gt;
  &amp;lt;game genre=&amp;quot;rpg&amp;quot;&amp;gt;XML Invaders&amp;lt;/game&amp;gt;&lt;br /&gt;
  &amp;lt;game genre=&amp;quot;rpg&amp;quot;&amp;gt;A Node in the XPath&amp;lt;/game&amp;gt;&lt;br /&gt;
  &amp;lt;game genre=&amp;quot;rpg&amp;quot;&amp;gt;XPath Racers&amp;lt;/game&amp;gt;&lt;br /&gt;
&amp;lt;/games&amp;gt;&lt;br /&gt;
//games.xsl&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:output method=&amp;quot;html&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;200&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;g&amp;gt;&lt;br /&gt;
&amp;lt;xsl:for-each select=&amp;quot;games/game&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;{number(10)*position()}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:value-of select=&amp;quot;text()&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
&amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>