snowwhite: XSLT / Verweis auf DTD hinzufügen / Output XML

Hallo,
ich möchte gern über XSLT ein XML-Dokument in XML ausgeben und dabei den Verweis auf eine DTD hinzufügen.
In meinem urspünglichen XML-Text ist kein Verweis auf eine DTD
Den Verweis auf die DTD möchte ich über das Stylesheet hinzufügen.
Ich habe schon ein paar Sachen ausprobiert, aber leider hat nichts funktioniert.

...
xsl:text
<!DOCTYPE regeln SYSTEM "regeln.dtd">
</xsl:text>
...

Oder die Zeile über einen globalen Parameter einfügen.

Das hat alles nicht funktioniert.
Vielleicht kann mir jemand von Euch einen kleinen Tipp geben, wie ich mein Problem lösen kann.

Vielen Dank auf jeden Fall schon im voraus.
Viele Grüße
snowwhite

  1. Hallo,

    ich möchte gern über XSLT ein XML-Dokument in XML ausgeben und dabei den Verweis auf eine DTD hinzufügen.

    <xsl:output doctype-system="http//example.com/foo.dtd" ... >
    http://de.selfhtml.org/xml/darstellung/xsltelemente.htm#output

    Grüße
    Thomas

    1. Hallo ihr beiden,
      vielen Dank für Eure schnelle Hilfe!:o)
      Es hat funktioniert.
      Viele Grüße
      snowwhite

      1. Hallo,
        ich habe jetzt doch noch einmal eine Frage.
        Mit doctype-system hat die automatische Erzeugung des DTD-Verweises geklappt.

        Ich habe das jetzt mit doctype-public versucht, aber leider funktioniert das nicht.
        Was mache ich falsch?

        <xsl:output method="xml"
        doctype-public="-//W3C//DTD HTML 4.01//EN
        http://www.w3.org/TR/html4/regeln.dtd"/>

        Vielen Dank.
        Viele Grüße
        snowwhite

        1. Hello out there!

          Was mache ich falsch?

          <xsl:output method="xml"
          doctype-public="-//W3C//DTD HTML 4.01//EN
          http://www.w3.org/TR/html4/regeln.dtd"/>

          Zum einen passt die XML-Ausgabemethode [XSLT §16.1] nicht zu HTML 4.01; du musst die HTML-Ausgabemethode [XSLT §16.2] verwenden.

          Oder du lässt die das Ergebnis als XHTML 1.0 ausgeben.

          Zum anderen ist der system identifier falsch, der ist für HTML 4.01 Strict "http://www.w3.org/TR/html4/strict.dtd".

          Und schließlich:

          „doctype-system gibt den System-Identifizierer an, der in der Dokumenttyp-Deklaration verwendet wird.“ [XSLT §16] Das wäre also "http://www.w3.org/TR/html4/strict.dtd".

          „doctype-public gibt den öffentlichen Identifizierer an, der in der Dokumenttyp-Deklaration verwendet wird.“ [ebenda] Das wäre also "-//W3C//DTD HTML 4.01//EN".

          See ya up the road,
          Gunnar

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
          1. Hallo,
            vielen Dank für Deine Antwort.
            Sorry, ich hätte vielleicht kein Beispiel einfügen sollen, sondern den Verweis, den ich wirklich einfügen möchte.

            Also, ich möchte genau diese Zeile im XML-Output haben:
            <!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd" []>

            Wenn ich diese Zeile
            ...
            doctype-public="-//OASIS//DTD DITA Task//EN" "task.dtd" []" />
            in mein Stylesheet schreibe, wird der DTD-Verweis nicht in den XML-Output geschrieben
            und wenn ich diese Version benutze auch nicht:
            ...
            doctype-public=" '-//OASIS//DTD DITA Task//EN' 'task.dtd' " />

            Ich weiß immer noch nicht genau, was ich falsch mache.
            Ich vermute, es liegt irgendwie an den "" und ' '.

            Vielen Dank.
            snowwhite

            1. Hello out there!

              Also, ich möchte genau diese Zeile im XML-Output haben:
              <!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd" []>

              '[]' soll wozu gut sein?

              doctype-public="-//OASIS//DTD DITA Task//EN" "task.dtd" []"
              doctype-public=" '-//OASIS//DTD DITA Task//EN' 'task.dtd' "

              Ich weiß immer noch nicht genau, was ich falsch mache.

              Lies mein Posting noch einmal. Den Teil nach „Und schließlich:“ noch zweimal.

              See ya up the road,
              Gunnar

              --
              „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
              1. Hallo Gunnar,
                stimmt, du hattest das, was Thomas mir noch einmal gesagt hat, schon geschrieben.
                Aber irgendwie habe ich das von Thomas besser verstanden als das von dir.
                Sorry.
                Und vielen Dank für Deine Unterstützung.:o)
                Viele Grüße
                snowwhite

            2. Hallo,

              Also, ich möchte genau diese Zeile im XML-Output haben:
              <!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd" []>

              Wenn ich diese Zeile
              ...
              doctype-public="-//OASIS//DTD DITA Task//EN" "task.dtd" []" />

              doctype-public=" '-//OASIS//DTD DITA Task//EN' 'task.dtd' " />
              Ich weiß immer noch nicht genau, was ich falsch mache.

              doctype-public="-//OASIS//DTD DITA Task//EN"
              doctype-system="task.dtd"

              Das [] kannst du nicht einfügen.

              Grüße
              Thomas

              1. Hello out there!

                doctype-public="-//OASIS//DTD DITA Task//EN"
                doctype-system="task.dtd"

                Sagte ich das nicht schon?

                Ich hatte Schneeweißchen durchaus zugetraut, 'gibt den .* Das wäre also' zu ersetzen durch '=' und ihre beispielhaft genannten Identifizierer durch die wirklichen.

                See ya up the road,
                Gunnar

                --
                „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                1. Hallo,

                  doctype-public="-//OASIS//DTD DITA Task//EN"
                  doctype-system="task.dtd"

                  Sagte ich das nicht schon?

                  Möchtest du eine ehrliche Antwort oder soll ich dich anlügen?

                  Grüße
                  Thomas

                  1. Hello out there!

                    Sagte ich das nicht schon?

                    Möchtest du eine ehrliche Antwort oder soll ich dich anlügen?

                    Eine ehrliche Lüge, bitte. Das wäre das Mindeste; ich tue das ja auch für dich. *VBG*

                    Aber im Ernst, lässt sich

                    „‚doctype-system gibt den System-Identifizierer an, der in der Dokumenttyp-Deklaration verwendet wird.‘ [XSLT §16] Das wäre also "http://www.w3.org/TR/html4/strict.dtd".“

                    anders deuten als

                    „"http://www.w3.org/TR/html4/strict.dtd" ist der SI; dieser gehört in den Wert des 'doctype-system'-Attributs“?

                    (Und entprechend für den PI.)

                    Die Analogie "http://www.w3.org/TR/html4/strict.dtd" zu "task.dtd" bzw. "-//W3C//DTD HTML 4.01//EN" zu "-//OASIS//DTD DITA Task//EN" war snowwhite ja klar.

                    Und dass ich dasselbe sagte wie du, auch; zumindest hinterher. ;-)

                    See ya up the road,
                    Gunnar

                    --
                    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                    1. Hallo,

                      Sagte ich das nicht schon?

                      Möchtest du eine ehrliche Antwort oder soll ich dich anlügen?

                      Eine ehrliche Lüge, bitte. Das wäre das Mindeste;

                      Du hast es wirklich gesagt*

                      Aber im Ernst, lässt sich

                      „‚doctype-system gibt den System-Identifizierer an, der in der Dokumenttyp-Deklaration verwendet wird.‘ [XSLT §16] Das wäre also "http://www.w3.org/TR/html4/strict.dtd".“

                      anders deuten

                      * nur das nutzt dem Fragenden nicht, wenn er nicht weiss was SI oder FPI ist.

                      Grüße
                      Thomas

                      1. Hello out there!

                        * nur das nutzt dem Fragenden nicht, wenn er nicht weiss was SI oder FPI ist.

                        Deshalb sagte ich das ja: „System-Identifizierer […] Das wäre also "http://www.w3.org/TR/html4/strict.dtd".“

                        Aber das Forum lebt ja von verschiedenen Antwort-Stilen. Und Frage-Stilen. [Cybaer] Vive la différence.

                        See ya up the road,
                        Gunnar

                        --
                        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
                    2. Hi,

                      zumindest hinterher. ;-)

                      Nein, nachher.

                      Um den Unterschied zu verdeutlichen:

                      Stell Dir vor, es sitzen 10 Leute nach Dir auf der Toilette.
                      Und jetzt stell Dir vor, es sitzen 10 Leute hinter Dir auf der Toilette.
                      Was wäre Dir lieber?

                      Oder geht Dir das am Hinter-n vorbei?

                      cu,
                      Andreas

                      --
                      Warum nennt sich Andreas hier MudGuard?
                      Schreinerei Waechter
                      O o ostern ...
                      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                      1. Hello out there!

                        Stell Dir vor, es sitzen 10 Leute nach Dir auf der Toilette.

                        Kann ich mir nicht vorstellen. Nach mir geht so bald keiner drauf.

                        See ya up the road,
                        Gunnar

                        --
                        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
              2. Hallo Thomas,
                klasse, das hat funktioniert.:o)
                Vielen Dank.
                snowwhite

  2. Tach snowwhite,

    In meinem urspünglichen XML-Text ist kein Verweis auf eine DTD
    Den Verweis auf die DTD möchte ich über das Stylesheet hinzufügen.
    Ich habe schon ein paar Sachen ausprobiert, aber leider hat nichts funktioniert.

    ...
    xsl:text
    <!DOCTYPE regeln SYSTEM "regeln.dtd">
    </xsl:text>
    ...

    Platziere unterhalb von xsl:stylesheet dieses Kindelement:

    <xsl:output method="xml" doctype-system="regeln.dtd"/>

    Sofern das Wurzelelement der Ausgabe regeln ist, wird die gewünschte DOCTYPE-Deklaration erzeugt.

    Man liest sich,
    svg4you