AMADEUS html plain
* import
java.io.*;
org.jdom.*;
org.jdom.input.*;
org.jdom.output.*;
java.util.*;
org.xml.sax.*;
org.xml.sax.helpers.*;
class Xml2SketchUus
class Xml2SketchUus
static final String TITLE = "AMADEUS html plain";
static final String DTDkohamärk = "thokDTDkoht";
static PrintWriter outf;
failinimed seab kasutav meetod (BaseLanguageXML.sketchify()):
static String inName = "";
static String outName = "";
main
public static void main(String[] arg)
throws FileNotFoundException,UnsupportedEncodingException,
IOException, JDOMException
? arg.length != 2
kasutusviisi selgitus
* System.out.println
("PRE-SKETCHIFIER FOR XML.");
("Usage:");
("java XMLSketchifier file1 file2 ");
(" file1: source xml");
(" file2: result xml; sketchified source, ");
(" ready for AMADEUS import");
<======
inName = arg[0];
outName = arg[1];
? inName.compareTo(outName) == 0
System.out.println("The names for file1 and fail2 must differ!");
<======
public static String xml2sketch()
tagastab veateate või ""
String viga = "";
System.out.println("Xml2Sketch:xmlSketchifier started");
System.out.println("Xml2Sketch: sketchifying: " + inName + " ==> " +
outName);
!!
avada out
!!
outf = new PrintWriter(new FileWriter(outName));
! (IOException e)
<=============="Caught IOException: " + e.getMessage()
writeHeader(TITLE);
peaskeemi algus:
välja(skeemiAlgus("0", "", "0", "0"));
välja(skeemiAlgus("0", "", "0", "0"));
haru algus
välja("");
haru keha algus
File file = new File(inName);
SAXBuilder builder = new SAXBuilder();
Document xmlDoc = builder.build(file);
List content = xmlDoc.getMixedContent();
Element root = null;
* Iterator i = content.iterator(); i.hasNext();
Object obj = i.next();
? (obj instanceof Element)
root = (Element)obj;
System.out.println("Xml2Sketch:xmlSketchifier root found");
välja(primitiiv("0", DTDkohamärk));
siia tuuakse hiljem DTD-skeem
<======
? (obj instanceof Comment)
väljaKommentaar((Comment)obj);
<======
? (obj instanceof ProcessingInstruction)
väljaTöötluskäsk((ProcessingInstruction)obj);
<======
//throw new IllegalAddException(
//"A Document may contain only objects of type Element, " +
//"Comment, and ProcessingInstruction");
? root == null
kui root == null, siis viga
System.out.println("Xml2Sketch:xmlSketchifier failed");
viga = "Root element not found";
<======
töödeldaElement(root);
peaskeemi lõpp:
välja(haruJaSkeemiLõpp());
writeFooter();
outf.flush();
outf.close();
! (JDOMException e)
? viga.length() != 0
System.out.println("Xml2Sketch:xmlSketchifier failed");
välja(primitiiv("0", DTDkohamärk));
siia tuuakse hiljem DTD-skeem
väljastada viga osaridade kaupa, a' 1 primitiiv
StringTokenizer st = new StringTokenizer(viga, " ", true);
String osa = "";
* ; st.hasMoreTokens() ;
String osake = st.nextToken();
? osake.startsWith("file:")
osa = osa + "source file:";
file: ... asendada
<======
? osa.length() > 30
välja(primitiiv("1", osa));
osa = "";
? osa.length() > 0
välja(primitiiv("1", osa));
<======
System.out.println("Xml2Sketch:xmlSketchifier completed.");
peaskeemi lõpp:
välja(haruJaSkeemiLõpp());
writeFooter();
outf.flush();
outf.close();
<======viga
static void töödeldaElement(Element elem)
välja(skeemiAlgus("0", elem.getName(), "0", "1"));
välja(atribuudid(elem));
skeemi päisena
välja(skeemiAlgus("0", "", "0", "0"));
haru algus
välja("");
haru keha algus
List mixedContent = elem.getMixedContent();
Iterator i = mixedContent.iterator();
String t;
* ;i.hasNext();
Object o = i.next();
? o instanceof Comment
väljaKommentaar((Comment)o);
<------
? o instanceof String
t = trimm((String)o);
trimmida, kuid jätta vahetühikud alles
t = ridadeks(t);
välja(primitiiv("0", t));
<------
? o instanceof Entity
t = ((Entity)o).getSerializedForm().trim();
t = ridadeks(t);
välja(primitiiv("0", t));
<------
? o instanceof CDATA
t = ((CDATA)o).getSerializedForm().trim();
t = ridadeks(t);
välja(primitiiv("0", t));
<------
? o instanceof Element
töödeldaElement((Element)o);
<------
? o instanceof ProcessingInstruction
väljaTöötluskäsk((ProcessingInstruction)o);
välja(haruJaSkeemiLõpp());
static void väljaKommentaar(Comment comm)
välja(skeemiAlgus("1", "", "2", "1"));
välja(skeemiAlgus("0", "", "0", "0"));
haru algus
välja("");
haru keha algus
String t = comm.getText().trim();
t = ridadeks(t);
välja(primitiiv("0", t));
välja(haruJaSkeemiLõpp());
static void väljaTöötluskäsk(ProcessingInstruction pi)
String t = pi.getTarget().trim() + " " + pi.getData().trim();
t = ridadeks(t);
välja(primitiiv("1", t));
static String atribuudid(Element elem)
String tulem = "";
List atrib = elem.getAttributes();
Iterator i = atrib.iterator();
* ;i.hasNext();
Object o = i.next();
String t = ((Attribute)o).getSerializedForm().trim();
t = ridadeks(t);
? t.length() == 0
<------
välja("");
välja(" " + t);
välja("");
<======tulem
static void välja(String s)
? s.length() > 0
outf.println(s);
static void writeHeader(String title)
static void writeFooter()
static String ridadeks(String t)
String tulem = "";
* int i = 0; i < t.length(); i++
String s = "" + t.charAt(i);
? !s.equals("\t")
tab-id jäävad ära
tulem += s;
? s.equals("\n")
tulem += "
";
<======tulem
public static String skeemiAlgus(String type, String comm,
String view, String icon)
String tulem = "";
skeemi algust tähistab
tulem += "\n";
tulem += "
\n";
tulem += "" + comm + "";
<======tulem
public static String haruJaSkeemiLõpp()
String tulem = "";
tulem += "
\n";
tulem += ("\n");
tulem += ("
\n");
tulem += ("");
<======tulem
public static String primitiiv(String type, String t)
String tulem = "";
<======
? t.length() > 0
tulem += "\n";
tulem += "
\n";
? type.equals("0")
tulem += (" " + t+"\n");
<======
? type.equals("1")
tulem += (" ? " + t+"\n");
tulem += ("");
<======tulem
private static String trimmX(String s)
int n = s.length();
? n == 0
<======""
int i = 0;
algusots
int j = n-1;
lõpuots
char c;
leida i
c = s.charAt(i);
? c == ' '
<======
i käes
? !Character.isWhitespace(c)
<======
i käes
<==========""
polnud muud, kui tühikust erinevad tühemikud
leida j
c = s.charAt(j);
? c == ' '
<======
j käes
? !Character.isWhitespace(c)
<======
j käes
<======s.substring(i, j+1)
private static String trimm(String s)
võtta ära
1) vahetult reavahetusele järgnevad tühkud (=taanded);
2) algustühikutele järgnev reavahetus (=tühirida);
3) viimasel kohal olev reavahetus.
String tulem = "";
boolean onTaandes = false;
* int i = 0; i < s.length(); i++
String t = "" + s.charAt(i);
? t.equals(" ") && onTaandes
tühik maha
<------
? t.equals("\n")
reavahetus
onTaandes = true;
tulem += t;
<------
muu
onTaandes = false;
tulem += t;
int i = tulem.lastIndexOf("\n");
viimane reavahetus maha
? i == tulem.length()-1
tulem = tulem.substring(0, i);
tühi prefiks+reavahetus maha
i = tulem.indexOf("\n");
? i >= 0
String p = tulem.substring(0, i).trim();
prefiks
? p.length() == 0
prefiksis ainult tühikud?
<======tulem.substring(i+1)
<======tulem