# HG changeset patch # User František Kučera # 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 --input-stdin --input-url - - --system-id (override SystemId from file/url) - + + --system-id (override SystemId from file/url, pokud začíná # → připojit za název souboru) + --reader-property - + --default-namespace-uri --default-namespace-prefix - + --output-file - + --action - + --action-property --action-properties (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