Ankündigung

Einklappen
Keine Ankündigung bisher.

XML: CDATA vs. escapedText

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    XML: CDATA vs. escapedText

    Hallo zusammen,

    bei der Entwicklung des Editors stehe ich grade vor der Entscheidung, wie ich Textknoten im XML speichere. Ich habe die Wahl zwischen CDATA und escapedText.

    Aus Gründen der Performance möchte ich nicht erst jeden Knoten daraufhin untersuchen, ob er Tags (bspw. HTML) enthält, um dann CDATA und sonst escaped text zu verweden. Deshalb ist jetzt die Entscheidung, welche der beiden folgenden Configs der Editor sinnvollerweise ablegen soll:

    Variante 1 - CDATA
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" design="pure" xsi:noNamespaceSchemaLocation="./visu_config.xsd">
      <meta>
        <plugins>
          <plugin name="colorchooser"/>
          <plugin name="diagram"/>
          <plugin name="upnpcontroller"/>
        </plugins>
        <mappings>
          <mapping name="Close_Open">
            <entry value="0"><![CDATA[zu]]></entry>
            <entry value="1"><![CDATA[offen]]></entry>
          </mapping>
          <mapping name="Open_Close">
            <entry value="0"><![CDATA[offen]]></entry>
            <entry value="1"><![CDATA[zu]]></entry>
          </mapping>
          <mapping name="Off_On">
            <entry value="0"><![CDATA[Aus]]></entry>
            <entry value="1"><![CDATA[An]]></entry>
          </mapping>
          <mapping name="On_Off">
            <entry value="0"><![CDATA[An]]></entry>
            <entry value="1"><![CDATA[Aus]]></entry>
          </mapping>
          <mapping name="KonnexHVAC">
            <entry value="auto"><![CDATA[Auto]]></entry>
            <entry value="comfort"><![CDATA[Komfort]]></entry>
            <entry value="standby"><![CDATA[Stand By]]></entry>
            <entry value="economy"><![CDATA[Economy]]></entry>
            <entry value="building_protection"><![CDATA[Haus-Schutz]]></entry>
          </mapping>
        </mappings>
        <stylings>
          <styling name="Red_Green">
            <entry value="0"><![CDATA[red]]></entry>
            <entry value="1"><![CDATA[green]]></entry>
          </styling>
          <styling name="Green_Red">
            <entry value="0"><![CDATA[green]]></entry>
            <entry value="1"><![CDATA[red]]></entry>
          </styling>
          <styling name="Blue_Green_Red">
            <entry range_min="-100" range_max="20"><![CDATA[blue]]></entry>
            <entry range_min="20" range_max="22"><![CDATA[green]]></entry>
            <entry range_min="22" range_max="100"><![CDATA[red]]></entry>
          </styling>
        </stylings>
        <statusbar>
          <status type="html"><![CDATA[<img src="icon/comet_64_ff8000.png" alt="CometVisu" /> by <a href="http://www.cometvisu.org/">CometVisu.org</a>
              - <a href=".?forceReload=true">Reload</a>
              - <a href="?config=demo">Widget Demo</a>]]></status>
          <status type="html" hrefextend="config"><![CDATA[- <a href="check_config.php">Check Config</a>]]></status>
        </statusbar>
      </meta>
      <page name="Start">
        <line/>
        <text align="center"><![CDATA[Welcome to the CometVisu!]]></text>
        <line/>
      </page>
    </pages>
    Variante 2 - escaped Text:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" design="pure" xsi:noNamespaceSchemaLocation="./visu_config.xsd">
      <meta>
        <plugins>
          <plugin name="colorchooser"/>
          <plugin name="diagram"/>
          <plugin name="upnpcontroller"/>
        </plugins>
        <mappings>
          <mapping name="Close_Open">
            <entry value="0">zu</entry>
            <entry value="1">offen</entry>
          </mapping>
          <mapping name="Open_Close">
            <entry value="0">offen</entry>
            <entry value="1">zu</entry>
          </mapping>
          <mapping name="Off_On">
            <entry value="0">Aus</entry>
            <entry value="1">An</entry>
          </mapping>
          <mapping name="On_Off">
            <entry value="0">An</entry>
            <entry value="1">Aus</entry>
          </mapping>
          <mapping name="KonnexHVAC">
            <entry value="auto">Auto</entry>
            <entry value="comfort">Komfort</entry>
            <entry value="standby">Stand By</entry>
            <entry value="economy">Economy</entry>
            <entry value="building_protection">Haus-Schutz</entry>
          </mapping>
        </mappings>
        <stylings>
          <styling name="Red_Green">
            <entry value="0">red</entry>
            <entry value="1">green</entry>
          </styling>
          <styling name="Green_Red">
            <entry value="0">green</entry>
            <entry value="1">red</entry>
          </styling>
          <styling name="Blue_Green_Red">
            <entry range_min="-100" range_max="20">blue</entry>
            <entry range_min="20" range_max="22">green</entry>
            <entry range_min="22" range_max="100">red</entry>
          </styling>
        </stylings>
        <statusbar>
          <status type="html">&lt;img src="icon/comet_64_ff8000.png" alt="CometVisu" /&gt; by &lt;a href="http://www.cometvisu.org/"&gt;CometVisu.org&lt;/a&gt;
              - &lt;a href=".?forceReload=true"&gt;Reload&lt;/a&gt;
              - &lt;a href="?config=demo"&gt;Widget Demo&lt;/a&gt;</status>
          <status type="html" hrefextend="config">- &lt;a href="check_config.php"&gt;Check Config&lt;/a&gt;</status>
        </statusbar>
      </meta>
      <page name="Start">
        <line/>
        <text align="center">Welcome to the CometVisu!</text>
        <line/>
      </page>
    </pages>
    Aufwand für die Editor-Entwicklung ist identisch 0 (muss zwischen einer von zwei PHP-Methoden wählen) - die Frage ist, was für den "hackwilligen User mit dem Texteditor" sinnvoller erscheint.

    Grüße,
    Julian

    #2
    Hi Jan, Variante 2 sieht besser les- und schreibbar aus.

    Bis bald

    Marcus

    Kommentar


      #3
      Hoi

      Mir gefällt auch Version 2 besser. Nur so aus dem Bauch heraus.
      Kann denn Version 1 Fehler besser herausfinden?
      Grüsse Bodo
      Fragen gehören ins Forum, und nicht in mein Postfach;
      EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

      Kommentar


        #4
        Zitat von Bodo Beitrag anzeigen
        Kann denn Version 1 Fehler besser herausfinden?
        Nicht dass ich wüsste.

        Beachtet bei der Meinung bitte auch den Bereich der Statusbar am Ende der Datei, wo ja wirklich mit HTML-Tags im XML gearbeitet wird.

        Wichtig ist auch: dem Editor ist wurstegal, was der User im vi so veranstaltet hat - er frisst munter CDATA und escapedText, auch gemischt. Es geht wirklich nur darum, in welchem Format der Editor speichern soll.

        Kommentar


          #5
          Klar Variante 2 - die ist fast überall leichter lesbar. Nur dort wo HTML direkt im Text steht, kann Variante 1 leichte Vorteile ausspielen - aber dieser Anwendungsfall ist im Vergleich zum Rest der Visu-Config höchst überschaubar.
          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

          Kommentar


            #6
            Auch ich tendiere spontan zu Variante 2 - Menschen-lesbar, XML ist so schon schlimm genug

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Ok, dann also escaped Text.

              Damit ist der Speichervorgang soweit abgeschlossen, und sobald man ihn auch über eine Button starten kann, gibt es den nächsten Commit.

              Kommentar

              Lädt...
              X