Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib;
2
3 33744 michele.ar
import static org.junit.Assert.assertEquals;
4
5
import java.io.StringReader;
6 26600 sandro.lab
import java.io.StringWriter;
7
8 33744 michele.ar
import org.dom4j.Document;
9
import org.dom4j.DocumentException;
10
import org.dom4j.io.SAXReader;
11 26600 sandro.lab
import org.junit.Test;
12
import org.w3c.dom.Node;
13
import org.w3c.dom.NodeList;
14
15
import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
16
17
/**
18
 * Unit test for simple App.
19
 */
20
public class AppTest {
21
22
	@Test
23
	public void testXslt() {
24 33744 michele.ar
		String res = new ApplyXslt(getXslt()).evaluate(getXml());
25 26600 sandro.lab
		System.out.println("******************");
26
		System.out.println(res);
27
		System.out.println("******************");
28
	}
29
30 33744 michele.ar
	@Test
31
	public void testXpath() throws DocumentException {
32
		SAXReader reader = new SAXReader();
33
		Document doc = reader.read(new StringReader("<a><b>test</b></a>"));
34
		assertEquals("", doc.valueOf("//c"));
35
		assertEquals("test", doc.valueOf("//b"));
36
	}
37
38
	public static String javaMethod(final NodeList list) {
39 26600 sandro.lab
		System.out.println("******************");
40
		System.out.println("TYPE   : " + list.toString());
41
		System.out.println("LENGTH : " + list.getLength());
42 33744 michele.ar
		for (int i = 0; i < list.getLength(); i++) {
43 26600 sandro.lab
			Node node = list.item(i);
44 33744 michele.ar
45 26600 sandro.lab
			System.out.println("ELEM " + i + ": " + node.getLocalName());
46
		}
47 33744 michele.ar
48 26600 sandro.lab
		System.out.println("******************");
49 33744 michele.ar
		return "ACUS";
50 26600 sandro.lab
	}
51
52
	private String getXml() {
53
		final StringWriter sw = new StringWriter();
54
		sw.append("<?xml version='1.0' encoding='UTF-8'?>\n");
55
		sw.append("<record>\n");
56
		sw.append("<metadata>\n");
57
		sw.append("<a>A text value</a>\n");
58
		sw.append("<b attr='attribute value'/>\n");
59
		sw.append("</metadata>\n");
60
		sw.append("</record>\n");
61
62
		return sw.toString();
63
	}
64
65
	private String getXslt() {
66
		final StringWriter sw = new StringWriter();
67
68
		sw.append("<?xml version='1.0' encoding='UTF-8'?>\n");
69
		sw.append("<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:dnet='eu.dnetlib.AppTest' exclude-result-prefixes='xsl dnet'>\n");
70
		sw.append("<xsl:output omit-xml-declaration='yes' indent='yes'/>\n");
71
		sw.append("<xsl:template match='/*'>\n");
72
		sw.append("<xsl:variable name='metadata' select=\"//*[local-name()='metadata']/*\" />\n");
73
		sw.append("<ROWS>\n");
74
		sw.append("<xsl:value-of select='dnet:javaMethod($metadata)'/>\n");
75
		sw.append("</ROWS>\n");
76
		sw.append("</xsl:template>\n");
77
		sw.append("</xsl:stylesheet>\n");
78
		return sw.toString();
79
	}
80
}