Mercurial > hg > mpdl-group
comparison software/mpdl-services/mpiwg-mpdl-xml/src/de/mpg/mpiwg/berlin/mpdl/xml/transform/FragmentTransformer.java @ 23:e845310098ba
diverse Korrekturen
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 27 Nov 2012 12:35:19 +0100 |
parents | dc5e9fcb3fdc |
children |
comparison
equal
deleted
inserted
replaced
22:6a45a982c333 | 23:e845310098ba |
---|---|
1 package de.mpg.mpiwg.berlin.mpdl.xml.transform; | 1 package de.mpg.mpiwg.berlin.mpdl.xml.transform; |
2 | 2 |
3 import java.io.IOException; | 3 import java.io.IOException; |
4 import java.io.StringWriter; | 4 import java.io.StringWriter; |
5 import java.net.URL; | 5 import java.net.URL; |
6 import java.util.Date; | |
7 | 6 |
8 import javax.xml.transform.stream.StreamSource; | 7 import javax.xml.transform.stream.StreamSource; |
9 | 8 |
10 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; | 9 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; |
11 | 10 |
22 public class FragmentTransformer { | 21 public class FragmentTransformer { |
23 private Processor processor; | 22 private Processor processor; |
24 private XsltCompiler xsltCompiler; | 23 private XsltCompiler xsltCompiler; |
25 private XsltTransformer xsltFragmentTransformer; | 24 private XsltTransformer xsltFragmentTransformer; |
26 | 25 |
27 public static void main(String[] args) { | 26 public FragmentTransformer() throws ApplicationException { |
28 try { | 27 init(); |
29 FragmentTransformer fragmentTransformer = new FragmentTransformer(); | |
30 String goerzDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Goerz_2008.xml"; | |
31 String benDoc = "file:/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Benedetti_1585.xml"; | |
32 String pageFragment = fragmentTransformer.getFragment(goerzDoc, "pb", 1, "pb", 2); | |
33 Date before = new Date(); | |
34 for (int i=1; i<=50; i++) { | |
35 pageFragment = fragmentTransformer.getFragment(benDoc, "pb", i, "pb", i+1); | |
36 } | |
37 Date after = new Date(); | |
38 System.out.println("Needed time: " + (after.getTime() - before.getTime()) + " ms"); | |
39 } catch (Exception e) { | |
40 e.printStackTrace(); | |
41 } | |
42 } | 28 } |
43 | 29 |
44 public FragmentTransformer() throws ApplicationException { | 30 public FragmentTransformer(String xmlFileName) throws ApplicationException { |
45 init(); | 31 init(); |
32 try { | |
33 StreamSource xmlDoc = new StreamSource(xmlFileName); | |
34 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents | |
35 } catch (SaxonApiException e) { | |
36 throw new ApplicationException(e); | |
37 } | |
46 } | 38 } |
47 | 39 |
48 private void init() throws ApplicationException { | 40 private void init() throws ApplicationException { |
49 try { | 41 try { |
50 processor = new Processor(false); | 42 processor = new Processor(false); |
67 Serializer serializer = new Serializer(); | 59 Serializer serializer = new Serializer(); |
68 serializer.setOutputWriter(new StringWriter()); | 60 serializer.setOutputWriter(new StringWriter()); |
69 serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); | 61 serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); |
70 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents | 62 xsltFragmentTransformer.setSource(xmlDoc); // needs some time for bigger documents |
71 xsltFragmentTransformer.setDestination(serializer); | 63 xsltFragmentTransformer.setDestination(serializer); |
72 QName xmlFileNameQName = new QName("xmlFileName"); | |
73 XdmValue xmlFileNameXdmValue = new XdmAtomicValue(xmlFileName); | |
74 QName ms1NameQName = new QName("ms1Name"); | 64 QName ms1NameQName = new QName("ms1Name"); |
75 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name); | 65 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name); |
76 QName ms1PositionQName = new QName("ms1Position"); | 66 QName ms1PositionQName = new QName("ms1Position"); |
77 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos); | 67 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos); |
78 QName ms2NameQName = new QName("ms2Name"); | 68 QName ms2NameQName = new QName("ms2Name"); |
79 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name); | 69 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name); |
80 QName ms2PositionQName = new QName("ms2Position"); | 70 QName ms2PositionQName = new QName("ms2Position"); |
81 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos); | 71 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos); |
82 xsltFragmentTransformer.setParameter(xmlFileNameQName, xmlFileNameXdmValue); | |
83 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue); | 72 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue); |
84 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue); | 73 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue); |
85 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue); | 74 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue); |
86 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue); | 75 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue); |
87 xsltFragmentTransformer.transform(); // needs some time for bigger documents | 76 xsltFragmentTransformer.transform(); // needs some time for bigger documents |
89 } catch (Exception e) { | 78 } catch (Exception e) { |
90 throw new ApplicationException(e); | 79 throw new ApplicationException(e); |
91 } | 80 } |
92 return pageFragment; | 81 return pageFragment; |
93 } | 82 } |
83 | |
84 public String getFragment(String ms1Name, int ms1Pos, String ms2Name, int ms2Pos) throws ApplicationException { | |
85 String pageFragment = null; | |
86 try { | |
87 Serializer serializer = new Serializer(); | |
88 serializer.setOutputWriter(new StringWriter()); | |
89 serializer.setOutputProperty(Serializer.Property.INDENT, "yes"); | |
90 xsltFragmentTransformer.setDestination(serializer); | |
91 QName ms1NameQName = new QName("ms1Name"); | |
92 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name); | |
93 QName ms1PositionQName = new QName("ms1Position"); | |
94 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos); | |
95 QName ms2NameQName = new QName("ms2Name"); | |
96 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name); | |
97 QName ms2PositionQName = new QName("ms2Position"); | |
98 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos); | |
99 xsltFragmentTransformer.setParameter(ms1NameQName, ms1NameXdmValue); | |
100 xsltFragmentTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue); | |
101 xsltFragmentTransformer.setParameter(ms2NameQName, ms2NameXdmValue); | |
102 xsltFragmentTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue); | |
103 xsltFragmentTransformer.transform(); // needs some time for bigger documents | |
104 pageFragment = serializer.getOutputDestination().toString(); | |
105 } catch (Exception e) { | |
106 throw new ApplicationException(e); | |
107 } | |
108 return pageFragment; | |
109 } | |
110 | |
111 | |
94 } | 112 } |