analýza: vstupní a výstupní moduly
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 07 Jun 2014 20:32:34 +0200
changeset 297284f95da10e
parent 28 f5e8eeffdfb5
child 30 f696e73de225
analýza: vstupní a výstupní moduly
analýza/alt2xml.txt
     1.1 --- a/analýza/alt2xml.txt	Sat Jun 07 18:41:15 2014 +0200
     1.2 +++ b/analýza/alt2xml.txt	Sat Jun 07 20:32:34 2014 +0200
     1.3 @@ -1,4 +1,4 @@
     1.4 -Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak, 
     1.5 +Slouží k načítání souborů ve všelijakých syntaxích (json, ini atd.) tak,
     1.6  aby s nimi následně šlo pracovat jako s XML.
     1.7  
     1.8  SAXParserFactory → SAXParser → XMLReader
     1.9 @@ -14,8 +14,8 @@
    1.10  	SAXParserFactory továrna = SAXParserFactory.newInstance();
    1.11  	SAXParser parser = továrna.newSAXParser();
    1.12  	parser.parse(new File("data/vstup.json"), h);
    1.13 -	
    1.14 -Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []), 
    1.15 +
    1.16 +Nikde sice nejsou žádné ostré závorky (např. JSON používá {} a []),
    1.17  ale používáme stejné API a všechny navazující nástroje jako u opravdového XML.
    1.18  
    1.19  Náš SAXParser používá SuperXMLReader, který rozhoduje, který konkrétní parser se použije.
    1.20 @@ -23,41 +23,84 @@
    1.21  
    1.22  Moduly řešit přes Features?
    1.23  
    1.24 +Kódování pro převod všech znaků na název XML elementu/atributu
    1.25 +
    1.26 +Možnost zakódovat properties XMLReaderu a skutečné SystemId do URI SystemId.
    1.27 +
    1.28  Vstupní formáty:
    1.29 -	JSON
    1.30 -	INI (sekce + klíč=hodnota)
    1.31 -	CSV (hlavičky → elementy)
    1.32 -	Javovské Properties a podobné (pozor na komentáře)
    1.33 -	HTML (zprasené, atributy bez uvozovek, atd.)
    1.34 -	TXT (co řádek, to element)
    1.35 -	ASN.1
    1.36 -	Linuxové konfiguráky, API a příkazy – /etc, /proc, /sys …
    1.37 -	
    1.38 -	
    1.39 +	RegExp:
    1.40 +		hledá v textu shodu s výrazem (typicky bude končit koncem řádku) a vrací skupiny z výrazu jako elementy
    1.41 +	Javovské Properties:
    1.42 +		proudové zpracování
    1.43 +		komentáře převést na XML komentáře
    1.44 +	INI:
    1.45 +		sekce (případně vnořené)
    1.46 +		klíč=hodnota
    1.47 +	CSV:
    1.48 +		hlavičky → elementy
    1.49 +	HTML:
    1.50 +		zprasené, atributy bez uvozovek, atd.
    1.51 +		asi TagSoup parser
    1.52 +	TXT:
    1.53 +		co řádek, to element
    1.54 +		číslování řádků (atribut)
    1.55 +	ASN.1:
    1.56 +		DER, BER…
    1.57 +	YAML:
    1.58 +		http://yaml.org/
    1.59 +	JSON:
    1.60 +		standardní struktura výstupního XML
    1.61 +	Markdown:
    1.62 +		https://github.com/sirthias/pegdown
    1.63 +	Souborový systém:
    1.64 +		adresářová struktura
    1.65 +		atributy souborů (včetně rozšířených)
    1.66 +		volitelně obsah souborů
    1.67 +		zpracovat celý podstrom nebo volitelně jen soubory/adresáře vyhovující regulárnímu výrazu
    1.68 +		vhodné pro konfiguraci programů
    1.69 +	Jednoduché XML
    1.70 +		definované odsazením
    1.71 +
    1.72 +Výstupní moduly:
    1.73 +	prostá kopie XML
    1.74 +	formátované XML: odsazení + volitelně barvy
    1.75 +	XSD/DTD validace
    1.76 +	XPath filtrování
    1.77 +	XSLT
    1.78 +	XQuery
    1.79 +	Souborový systém (stromová struktura adresářů a souborů)
    1.80 +	YAML, INI, JSON a další formáty
    1.81 +
    1.82  CLI API:
    1.83  	--input-file <filename>
    1.84  	--input-stdin <systemId>
    1.85  	--input-url <systemId>
    1.86 -	
    1.87 -	--system-id <systemId> (override SystemId from file/url)
    1.88 -	
    1.89 +
    1.90 +	--system-id <systemId> (override SystemId from file/url, pokud začíná # → připojit za název souboru)
    1.91 +
    1.92  	--reader-property <key> <value>
    1.93 -	
    1.94 +
    1.95  	--default-namespace-uri <uri>
    1.96  	--default-namespace-prefix <prefix>
    1.97 -	
    1.98 +
    1.99  	--output-file <filename>
   1.100 -	
   1.101 +
   1.102  	--action <pluginName>
   1.103 -	
   1.104 +
   1.105  	--action-property <key> <value>
   1.106  	--action-properties <array> (last option, opaque data follows)
   1.107  
   1.108  
   1.109 +Self-documenting:
   1.110 +	po vzoru JDBC ovladačů
   1.111 +	jak pro vstupní XMLReadery, tak pro výstupní moduly
   1.112 +	konfigurační volba má: název, titulek, popis, datový typ, výčet hodnot, povinnost
   1.113 +	společné/generické volby definované na jednom místě
   1.114 +	→ vygenerovat dokumentaci + bash-completion
   1.115  
   1.116  Odkazy:
   1.117  	TagSoup: http://mercury.ccil.org/~cowan/XML/tagsoup/
   1.118 -	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML. 
   1.119 +	HotSAX: http://hotsax.sourceforge.net/ – HotSAX is a small fast SAX2 parser for HTML, XHTML and XML.
   1.120  	XOM: http://www.cafeconleche.org/XOM/ – XOM is fairly unique in that it is a dual streaming/tree-based API.
   1.121  	Jericho: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/StreamedSource.html – Iterátor
   1.122  	SAX → DOM: http://www.java2s.com/Code/Java/XML/SaxtoDOMconverter.htm