1 /*
2 * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved.
3 *
4 * This software is open source.
5 * See the bottom of this file for the licence.
6 *
7 * $Id: TestXSLT.java,v 1.8 2004/06/25 08:03:47 maartenc Exp $
8 */
9
10 package org.dom4j;
11
12 import java.util.List;
13
14 import javax.xml.transform.Source;
15 import javax.xml.transform.Transformer;
16 import javax.xml.transform.TransformerFactory;
17 import javax.xml.transform.stream.StreamSource;
18
19 import junit.framework.Test;
20 import junit.framework.TestSuite;
21 import junit.textui.TestRunner;
22
23 import org.dom4j.io.DocumentResult;
24 import org.dom4j.io.DocumentSource;
25 import org.dom4j.io.SAXReader;
26
27 /*** Tests that XSLT works correctly
28 *
29 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
30 * @version $Revision: 1.8 $
31 */
32 public class TestXSLT extends AbstractTestCase {
33
34 public static void main( String[] args ) {
35 TestRunner.run( suite() );
36 }
37
38 public static Test suite() {
39 return new TestSuite( TestXSLT.class );
40 }
41
42 public TestXSLT(String name) {
43 super(name);
44 }
45
46 // Test case(s)
47 //-------------------------------------------------------------------------
48 public void testTransform() throws Exception {
49 Document transformedDoc = transform( "/xml/nitf/ashtml.xsl" );
50
51 //log( transformedDoc.asXML() );
52
53 assertTrue( "Transformed Document is not null", transformedDoc != null );
54
55 List h1List = transformedDoc.selectNodes( "/html//h1" );
56
57 assertTrue( "At least one <h1>", h1List.size() > 0 );
58
59 List pList = transformedDoc.selectNodes( "//p" );
60
61 assertTrue( "At least one <p>", pList.size() > 0 );
62 }
63
64 // Implementation methods
65 //-------------------------------------------------------------------------
66 protected void setUp() throws Exception {
67 SAXReader reader = new SAXReader();
68 document = reader.read(getClass().getResource("/xml/nitf/sample.xml"));
69 }
70
71 protected Document transform(String xsl) throws Exception {
72 assertTrue( "Document is not null", document != null );
73
74 // load the transformer
75 TransformerFactory factory = TransformerFactory.newInstance();
76 Transformer transformer = factory.newTransformer(
77 new StreamSource(getClass().getResourceAsStream(xsl))
78 );
79
80 // now lets create the TrAX source and result
81 // objects and do the transformation
82 Source source = new DocumentSource( document );
83 DocumentResult result = new DocumentResult();
84 transformer.transform( source, result );
85
86 return result.getDocument();
87 }
88
89 }
90
91
92
93
94 /*
95 * Redistribution and use of this software and associated documentation
96 * ("Software"), with or without modification, are permitted provided
97 * that the following conditions are met:
98 *
99 * 1. Redistributions of source code must retain copyright
100 * statements and notices. Redistributions must also contain a
101 * copy of this document.
102 *
103 * 2. Redistributions in binary form must reproduce the
104 * above copyright notice, this list of conditions and the
105 * following disclaimer in the documentation and/or other
106 * materials provided with the distribution.
107 *
108 * 3. The name "DOM4J" must not be used to endorse or promote
109 * products derived from this Software without prior written
110 * permission of MetaStuff, Ltd. For written permission,
111 * please contact dom4j-info@metastuff.com.
112 *
113 * 4. Products derived from this Software may not be called "DOM4J"
114 * nor may "DOM4J" appear in their names without prior written
115 * permission of MetaStuff, Ltd. DOM4J is a registered
116 * trademark of MetaStuff, Ltd.
117 *
118 * 5. Due credit should be given to the DOM4J Project -
119 * http://www.dom4j.org
120 *
121 * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
122 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
123 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
124 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
125 * METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
126 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
127 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
128 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
129 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
130 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
131 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
132 * OF THE POSSIBILITY OF SUCH DAMAGE.
133 *
134 * Copyright 2001-2004 (C) MetaStuff, Ltd. All Rights Reserved.
135 *
136 * $Id: TestXSLT.java,v 1.8 2004/06/25 08:03:47 maartenc Exp $
137 */