Show
Ignore:
Timestamp:
07/05/12 20:13:56 (12 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

#20 Skriptování: výstupní formáty: text (prostý), xhtml (fragment), xml (celý dokument, může mít XML deklaraci).

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java

    r107 r108  
    4141public class Skriptování { 
    4242 
     43        private enum FORMÁT { 
     44 
     45                xml, 
     46                xhtml, 
     47                text 
     48        } 
    4349        /** 
    4450         * klíč = jazyk – např. bash 
     
    7177        public static Source interpretuj(String skriptText, String skriptSoubor, String jazyk, String výstupníFormát, String uriStránky, String nadpisStránky, String perexStránky) throws Exception { 
    7278                String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); 
    73                 return vyrobXml(výstupSkriptu, "xml".equals(výstupníFormát)); 
     79                return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát)); 
    7480        } 
    7581 
     
    170176        } 
    171177 
     178        private static FORMÁT zjistiFormát(String výstupníFormát) { 
     179                try { 
     180                        return FORMÁT.valueOf(výstupníFormát); 
     181                } catch (NullPointerException e) { 
     182                        return FORMÁT.text; 
     183                } catch (IllegalArgumentException e) { 
     184                        return FORMÁT.text; 
     185                } 
     186        } 
     187 
    172188        /** 
    173189         * @param zadání výstup vygenerovaný skriptem 
     
    176192         * @throws Exception 
    177193         */ 
    178         private static Source vyrobXml(String zadání, boolean xmlFormát) throws Exception { 
     194        private static Source vyrobXml(String zadání, FORMÁT formát) throws Exception { 
    179195                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    180196                DocumentBuilder db = dbf.newDocumentBuilder(); 
    181197                Document d; 
    182198 
    183                 if (xmlFormát) { 
    184                         try { 
    185                                 zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>"; 
    186                                 d = db.parse(new ByteArrayInputStream(zadání.getBytes())); 
    187                         } catch (Exception e) { 
    188                                 System.err.println("Chyba: Skript vrátil neplatné XML."); 
    189                                 throw e; 
    190                         } 
    191                 } else { 
     199 
     200                if (formát == FORMÁT.text) { 
    192201                        d = db.newDocument(); 
    193202                        Node html = d.createElementNS(XHTML, "html"); 
     
    197206                        html.appendChild(body); 
    198207                        d.appendChild(html); 
     208                } else { 
     209                        if (formát == FORMÁT.xhtml) { 
     210                                zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>"; 
     211                        } 
     212                        try { 
     213                                d = db.parse(new ByteArrayInputStream(zadání.getBytes())); 
     214                        } catch (Exception e) { 
     215                                System.err.println("Chyba: Skript vrátil neplatné XML."); 
     216                                throw e; 
     217                        } 
    199218                } 
    200219