Ankündigung

Einklappen
Keine Ankündigung bisher.

utf8 konforme xml dokumente

Einklappen

Neue Werbung 2019

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

  • utf8 konforme xml dokumente

    Hallo,
    ich versuche seit einiger Zeit ein gültiges XML Dolkument zu erstellen, jedoch habe ich ständig Probleme mit sonderzeichen usw. Egal ob ich alles mit utf8_encode ausgebe oder die einzelnen einträge mit htmlentities konvertiere. Welche funktionen kann ich benutzen um gültigen utf8/xml zu erzeugen? Bzw. welche zeichen müssen wie durch welche anderen Zeichen ersetzt werden dann könnte ich mir selber die regex schreiben.
    Danke

  • #2
    Was hat das mit PHP zu tun?

    Du musst es im UTF-8 Format abspeichern (Einstellung in der IDE vornehmen) und in der X(HT)ML Datei diesen Zeichensatz festlegen.

    Kommentar


    • #3
      War da auch mal auf der Suche, allerdings etwas anderes Problem. Bin dann aber hieraufgestoßen, hat mich schonmal weiter gebracht.

      Entities sind auf jeden Fall in XML ausdrücklich erlaubt. utf-8 macht sie nur gewissermaßen nutzlos Wennde das Dokument komplett auf utf-8 aufsetzt, sollte es keine Probleme geben. Bloss die Sonderzeichen für xml ("<>&) sollte man noch escapen, is aber (angeblich) wohl auch nicht notwendig.

      Kommentar


      • #4
        Escapen ist der falsche Ausdruck. Entities verwenden würde ich es nennen.

        Kommentar


        • #5
          Entity-kodieren muss man eigentlich nur _<_ (&lt und _&_ (&amp, in Attributen auch _"_ (&quot und _'_ (&apos

          Kommentar


          • #6
            vielleicht hier noch die entsprechende PHP-Funktion:
            http://de.php.net/htmlspecialchars

            Kommentar


            • #7
              nuja statt & #039; wäre besser &apos;

              Kommentar


              • #8
                "Besser" wär es net, weils auf das identische hinausläuft. Einzig besser lesbar.

                Zudem (ich weiß es grad net genau, werde aber gleich nachschaun) wird bei xml-Attributen das " verwendet, weswegen man die einfachen Anführung nicht codieren muss.

                Escapen ist der falsche Ausdruck. Entities verwenden würde ich es nennen.
                Grübel ich schon drüber, seit ich mit HTML angefangen habe, aber ich denk, weil damit auch Sonderzeichen geschützt werden, sollte "escapen" zumindest legitim sein

                Kommentar


                • #9
                  Die XML-Spec schlägt &apos; vor:
                  http://www.w3.org/TR/REC-xml/#syntax
                  To allow attribute values to contain both single and double quotes, the apostrophe or single-quote character (') may be represented as "&apos;", and the double-quote character (") as "&quot;".
                  Attribute sehen übrigens sowohl ' als auch " als Delimiter vor. Gleiches Dokument, direkt über der anderen Stelle:
                  AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"

                  Kommentar


                  • #10
                    Vielen Dank für eure Hilfreichen Antworten(auch wenn es nichts/ bzw. nur bedingt mit php zu tun hat). Ein Frage hätte ich da noch bzgl urls. muss ich die mit urlencode kodieren? Also wenn ein element eine url enthält oder läuft das dann genauso wie der rest?
                    Danke
                    Solarwasser

                    Kommentar


                    • #11
                      Wozu Entities codieren??? Um ein UTF-8 komformes XML in PHP zu erstellen braucht man nur diese beiden Funktionen

                      http://www.php.net/manual/de/function.utf8-encode.php
                      http://pear.php.net/manual/de/html/p...tasection.html

                      Fertig damit können alle Zeichensatzprobleme umgangen werden.

                      Innerhalb des CDATA-Abschnittes können Markup-Zeichen (<, > und &) enthalten sein. Diese werden vom Parser ignoriert. Allerdings darf die Zeichenfolge ]]> innerhalb von Inhalt nicht erscheinen; sie würde das Ende des CDATA-Abschnittes angeben. Ein nachfolgendes ]]> würde somit als Syntaxfehler interpretiert werden.
                      CDATA-Abschnitte werden in XML besonders gern verwendet, um das Eingeben und Lesen langer Computerprogramme oder sogar XML-Code über einen größeren Bereich angenehmer zu machen. Dadurch entfällt die Verwendung von vordefinierten Entities wie &lt; und &amp;.
                      Quelle: http://de.wikipedia.org/wiki/CDATA
                      bzw. sogar noch genauer
                      CDATA is a sequence of characters from the document character set and may include character entities. User agents should interpret attribute values as follows:
                      • Replace character entities with characters,
                      • Ignore line feeds,
                      • Replace each carriage return or tab with a single space.

                      Quelle: http://www.w3.org/TR/html4/types.html
                      Ist zwar unter HMTL Types zu finden weil man CDATA anstatt Kommentartags innerhalb Script-Tags verwenden sollte aber es trifft auf XML genauso zu und wird auch unterstützt.

                      Kommentar


                      • #12
                        Zitat von HStev
                        Wozu Entities codieren???
                        Weil's meistens lesbarer ist als 1000 CDATAs, unkomprimiert auch kleiner.

                        Zitat von HStev
                        http://www.php.net/manual/de/function.utf8-encode.php
                        Fertig damit können alle Zeichensatzprobleme umgangen werden.
                        Nur mit iso-8859-1 aus Ausgangszeichensatz, international muss man da flexibler denken und z.B. zu mb_convert_encoding greifen.
                        http://www.php.net/manual/de/functio...t-encoding.php

                        Kommentar


                        • #13
                          Zitat von Waq
                          Zitat von HStev
                          Wozu Entities codieren???
                          Weil's meistens lesbarer ist als 1000 CDATAs, unkomprimiert auch kleiner.
                          lesbarer? halte ich fürn Gerücht.
                          unkomprimiert = kleiner ... ok ist einleuchtend aber kommts auf die paar Byte wirklich drauf an?
                          [edit] obwohl auch nicht wirklich ... die Länge von 10 entities (als Steuercodes) ist wesentlich länger als <![CDATA[ ]]>

                          Zitat von Waq
                          Nur mit iso-8859-1 aus Ausgangszeichensatz, international muss man da flexibler denken und z.B. zu mb_convert_encoding greifen.
                          http://www.php.net/manual/de/functio...t-encoding.php
                          hmmm ok wieder was gelernt ... vor diesen Problem stand ich bisher noch nie...

                          Kommentar


                          • #14
                            Zitat von HStev
                            lesbarer? halte ich fürn Gerücht.
                            <tag att1="1" att2="1&lt;2" att3="&quot;lorem ipsum...&quot;" />
                            <tag att1="<![CDATA[1]]>" att2="<![CDATA[1<2]]>" att3="<![CDATA[lorem ipsum...]]"/>

                            Kommentar


                            • #15
                              ähm in Attributen fällt CDATA weg... da brauchst das nicht ... durch die Anführungszeichen

                              in Attributen kannst die entities normal schreiben voraus gesetzt sie entsprechen den Zeichensatz

                              Kommentar

                              Lädt...
                              X