# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1402165954 -7200
# Node ID 7284f95da10e0ac35ac1445da75073f9df9c8c47
# Parent  f5e8eeffdfb57f5b7cdaa27eb27a067a374bbaf9
analýza: vstupní a výstupní moduly

diff -r f5e8eeffdfb5 -r 7284f95da10e analýza/alt2xml.txt
--- a/analýza/alt2xml.txt	Sat Jun 07 18:41:15 2014 +0200
+++ b/analýza/alt2xml.txt	Sat Jun 07 20:32:34 2014 +0200
@@ -1,4 +1,4 @@
-Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak, 
+Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak,
 aby s nimi následně šlo pracovat jako s XML.
 
 SAXParserFactory → SAXParser → XMLReader
@@ -14,8 +14,8 @@
 	SAXParserFactory továrna = SAXParserFactory.newInstance();
 	SAXParser parser = továrna.newSAXParser();
 	parser.parse(new File("data/vstup.json"), h);
-	
-Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []), 
+
+Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []),
 ale používáme stejné API a všechny navazující nástroje jako u opravdového XML.
 
 Náš SAXParser používá SuperXMLReader, který rozhoduje, který konkrétní parser se použije.
@@ -23,41 +23,84 @@
 
 Moduly řešit přes Features?
 
+Kódování pro převod všech znaků na název XML elementu/atributu
+
+Možnost zakódovat properties XMLReaderu a skutečné SystemId do URI SystemId.
+
 Vstupní formáty:
-	JSON
-	INI (sekce + klíč=hodnota)
-	CSV (hlavičky → elementy)
-	Javovské Properties a podobné (pozor na komentáře)
-	HTML (zprasené, atributy bez uvozovek, atd.)
-	TXT (co řádek, to element)
-	ASN.1
-	Linuxové konfiguráky, API a příkazy – /etc, /proc, /sys …
-	
-	
+	RegExp:
+		hledá v textu shodu s výrazem (typicky bude končit koncem řádku) a vrací skupiny z výrazu jako elementy
+	Javovské Properties:
+		proudové zpracování
+		komentáře převést na XML komentáře
+	INI:
+		sekce (případně vnořené)
+		klíč=hodnota
+	CSV:
+		hlavičky → elementy
+	HTML:
+		zprasené, atributy bez uvozovek, atd.
+		asi TagSoup parser
+	TXT:
+		co řádek, to element
+		číslování řádků (atribut)
+	ASN.1:
+		DER, BER…
+	YAML:
+		http://yaml.org/
+	JSON:
+		standardní struktura výstupního XML
+	Markdown:
+		https://github.com/sirthias/pegdown
+	Souborový systém:
+		adresářová struktura
+		atributy souborů (včetně rozšířených)
+		volitelně obsah souborů
+		zpracovat celý podstrom nebo volitelně jen soubory/adresáře vyhovující regulárnímu výrazu
+		vhodné pro konfiguraci programů
+	Jednoduché XML
+		definované odsazením
+
+Výstupní moduly:
+	prostá kopie XML
+	formátované XML: odsazení + volitelně barvy
+	XSD/DTD validace
+	XPath filtrování
+	XSLT
+	XQuery
+	Souborový systém (stromová struktura adresářů a souborů)
+	YAML, INI, JSON a další formáty
+
 CLI API:
 	--input-file <filename>
 	--input-stdin <systemId>
 	--input-url <systemId>
-	
-	--system-id <systemId> (override SystemId from file/url)
-	
+
+	--system-id <systemId> (override SystemId from file/url, pokud začíná # → připojit za název souboru)
+
 	--reader-property <key> <value>
-	
+
 	--default-namespace-uri <uri>
 	--default-namespace-prefix <prefix>
-	
+
 	--output-file <filename>
-	
+
 	--action <pluginName>
-	
+
 	--action-property <key> <value>
 	--action-properties <array> (last option, opaque data follows)
 
 
+Self-documenting:
+	po vzoru JDBC ovladačů
+	jak pro vstupní XMLReadery, tak pro výstupní moduly
+	konfigurační volba má: název, titulek, popis, datový typ, výčet hodnot, povinnost
+	společné/generické volby definované na jednom místě
+	→ vygenerovat dokumentaci + bash-completion
 
 Odkazy:
 	TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
-	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML. 
+	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML.
 	XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
 	Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
 	SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm