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