Lude: xpath concat()

Hi,

wie kann ich denn in der o.g. Funktion das Hochkomma maskieren?

Gruss,
Lude

  1. Hi Lude!

    Du kannst verschiedenes mal ausprobieren:
    1. direkt den Text in CDATA schreiben:
    Bsp.:
    <![CDATA[mit 'Anfuehrungszeichen' ausgegeben]]>

    2. einen Parameter erzeugen, diesen mittels xsl:text auf den String mit ' setzen und dann concatenieren.

    3. Du kannst dir fuer ' eine eigene Entitiy definieren und diese dann anstelle verwenden.

    Ich hoffe, dass mindestens ein Ansatz brauchbar ist.

    Viel Spass,
    Richard

  2. Hallo,

    wie kann ich denn in der o.g. Funktion das Hochkomma maskieren?

    '

    Grüße
    Thomas

    1. Hi,

      wie kann ich denn in der o.g. Funktion das Hochkomma maskieren?

      '

      wenn ich den lokalen XML-Guru schon einmal vor Ort habe, eine kleine Frage: reine XML/XSL(T)-Webloesungen, sind OK? Sind die schon ueblich? Ist XML(TM) der Nachfolger von (X)HTML?

      Gruss,
      Lude

      1. Hallo,

        wenn ich den lokalen XML-Guru schon einmal vor Ort habe,

        Gib mir bitte beschied, wenn du ihn getroffen hast!

        eine kleine Frage: reine XML/XSL(T)-Webloesungen, sind OK? Sind die schon ueblich?

        Wenn du die XML/XSLT Verarbeitung am Server machst, sind solche Lösungen schon gang und gebe. Clientseitig sind solche Lösungen aber noch immer privaten HPs vorbehalten.

        »»Ist XML(TM) der Nachfolger von (X)HTML?

        Was meinst du mit XML(TM)? XML-TopicMaps?
        Nein XML ist kein Nachvolder von (X)HTML wird es auch nicht werden. Der Browser muss ja letztlich wissen, wie er Elemente darstellen soll. gut das kann man mit CSS und XML auch beinflussen, aber das erreicht schnell die Grenzen das Machbaren.

        Grüße
        Thomas

        1. Hi,

          Gib mir bitte beschied, wenn du ihn getroffen hast!

          Bescheid!   ;-)

          Wenn du die XML/XSLT Verarbeitung am Server machst, sind solche Lösungen schon gang und gebe. Clientseitig sind solche Lösungen aber noch immer privaten HPs vorbehalten.

          Die o.g. Verarbeitung moechte ich nicht am Server machen, weil a) Datenredundanz vermieden werden soll (DataGrids mit vielen 'SELECT'-Elementen, die identisch gefuellt sind, z.B..) b) die Geschaeftslogik in den Datenzugriffsprozeduren steckt und "das Style nur das Style" ist

          »»Ist XML(TM) der Nachfolger von (X)HTML?
          Was meinst du mit XML(TM)? XML-TopicMaps?

          XML(Trademark), ist wirklich eine Marke von 'Rational Software'.

          Nein XML ist kein Nachvolder von (X)HTML wird es auch nicht werden. Der Browser muss ja letztlich wissen, wie er Elemente darstellen soll. gut das kann man mit CSS und XML auch beinflussen, aber das erreicht schnell die Grenzen das Machbaren.

          Ich mache es (testweise) mit XSL zu Fuss; geht auch gut, leider kann ich mir das vom Browser generierte (X)HTML nicht anzeigen lassen. Geht das? - Gibt es auch Umgebungen (XMLSpy) mit denen man "XML/XSL-Webs" komfortabel entwickeln kann?

          Gruss,
          Lude

          1. Hallo,

            »»Ist XML(TM) der Nachfolger von (X)HTML?
            Was meinst du mit XML(TM)? XML-TopicMaps?

            XML(Trademark), ist wirklich eine Marke von 'Rational Software'.

            Ah ... die!

            Ich mache es (testweise) mit XSL zu Fuss; geht auch gut, leider kann ich mir das vom Browser generierte (X)HTML nicht anzeigen lassen. Geht das? -

            Ja, zumindest mit dem IE:
            Es gibt ein Tool von M$ dafür http://www.microsoft.com/downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=en

            Gibt es auch Umgebungen (XMLSpy) mit denen man "XML/XSL-Webs" komfortabel entwickeln kann?

            Ich weiss nicht genau was du mit "XML/XSL-Webs" meinst.
            XMLSpy hat ja Authentic und XSLStyler, die sind mehr oder weniger gut.
            Was aber besser ist, du kannst deine Transformation gleich testen (mit beliebeigen XSLT-Parser) dafür ist es wirklich ok (nicht aber für das Schreiben von XSLT-Sheets, da muss man nach wie vor Hand anlegen.
            Es gibt dieverse andere Tools -teils freeware - die auch ganz gute Dienste leisten z.B. XSLCatch etc.

            Grüße
            Thomas

            1. Hi,

              Ja, zumindest mit dem IE:
              Es gibt ein Tool von M$ dafür http://www.microsoft.com/downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=en

              danke fuer den wertvollen Hinweis.

              Gibt es auch Umgebungen (XMLSpy) mit denen man "XML/XSL-Webs" komfortabel entwickeln kann?

              Ich weiss nicht genau was du mit "XML/XSL-Webs" meinst.
              XMLSpy hat ja Authentic und XSLStyler, die sind mehr oder weniger gut.

              Ich arbeite mit XML Spy 5 Prof., allerdings bisher nur, um Schnittstellen zu definieren.

              Was aber besser ist, du kannst deine Transformation gleich testen (mit beliebeigen XSLT-Parser) dafür ist es wirklich ok (nicht aber für das Schreiben von XSLT-Sheets, da muss man nach wie vor Hand anlegen.

              Ja, den XSLT-Debugger habe ich jetzt etwas getestet. - Allerdings stelle ich mir die "perfekte" Webentwicklung einer "Seite" wie folgt vor: 1.) ich erstelle mit einem speziellen Tool (gibt's das?) 'MS Frontpage'-aehnlich (incl. Bindung an Datenquellen, die "XML-Datensatzmengen" ausgeben) die Praesentation. Das Tool erzeugt ein XSL-Dokument 2.) werden Daten aus der Datenhaltung fuer die angeforderte "Seite" benoetigt, dann lasse ich aus dem Datenserver ein paar "XML-Datensatzmengen" kommen 3.) ich verpacke die Datensatzmengen in ein XML-Dokument (kann auch leer sein; allerdings incl. Verweis auf das XSL-Dokument) und sende es an den Browser 4.) dieser laedt dann noch die unter 1 genannte Praesentationsschicht.

              Gruss,
              Lude

              ---
              "Wir brauchen Klarheit bei der Maut bis Weihnachten."

              1. Hallo,

                Ja, den XSLT-Debugger habe ich jetzt etwas getestet. - Allerdings stelle ich mir die "perfekte" Webentwicklung einer "Seite" wie folgt vor: 1.) ich erstelle mit einem speziellen Tool (gibt's das?) 'MS Frontpage'-aehnlich (incl. Bindung an Datenquellen, die "XML-Datensatzmengen" ausgeben) die Praesentation. Das Tool erzeugt ein XSL-Dokument 2.)

                *lol*
                Ja das gibt es ;-)
                Unter http://www.santaclausonline.com/ bzw. http://www.santaclauslive.com/

                Im ernst, sowas wäre natürlich interessant, aber wie sollte das gehen? Außer dir weiss keiner was du genau machen willst bzw. wie deine Präs. aufgebaut sein soll.
                Für einfache lineale Transformationen kann man schnell was mit dem XSLStyler zusammenstricken, aber es hört sofor auf, wenn du Variablen, Schleifen, benannte Templates nutzen willst um von keys oder komplizierteren XPath-Ausdrücken schon gar nicht zu sprechen (was gerade bei Daten aus einer DB immer wieder leicht vorkommt), da muss man noch immer selber denken und den Code schreiben.

                »»werden Daten aus der Datenhaltung fuer die angeforderte "Seite" benoetigt, dann lasse ich aus dem Datenserver ein paar "XML-Datensatzmengen" kommen 3.) ich verpacke die Datensatzmengen in ein XML-Dokument (kann auch leer sein; allerdings incl. Verweis auf das XSL-Dokument) und sende es an den Browser 4.) dieser laedt dann noch die unter 1 genannte Praesentationsschicht.

                Das ist sicherlich das kleinste Problem bei der Sache.
                Eine XML-Datei on-the-fly zu erstellen (Perl, PHP, etc.) ist ja kein so großes Problem.

                Grüße
                Thomas

                1. Hi,

                  Ja, den XSLT-Debugger habe ich jetzt etwas getestet. - Allerdings stelle ich mir die "perfekte" Webentwicklung einer "Seite" wie folgt vor: 1.) ich erstelle mit einem speziellen Tool (gibt's das?) 'MS Frontpage'-aehnlich (incl. Bindung an Datenquellen, die "XML-Datensatzmengen" ausgeben) die Praesentation. Das Tool erzeugt ein XSL-Dokument 2.)

                  *lol*
                  Ja das gibt es ;-)
                  Unter http://www.santaclausonline.com/ bzw. http://www.santaclauslive.com/
                  Im ernst, sowas wäre natürlich interessant, aber wie sollte das gehen? Außer dir weiss keiner was du genau machen willst bzw. wie deine Präs. aufgebaut sein soll.

                  ja, wie soll das gehen:
                  Ein XSL wird auf ein XML angewendet. Das XML ist klar zu erkennen, man hat einfach n "XML-Datensatzmengen", frisch aus dem RDB(M)S. Diese hat man in ein XML "zusammengepackt".
                  Jetzt zum von mir angedachten "XSL-Designer": Wenn das XML eine feste Struktur hat, also beispielsweise ein Stammelement mit immer demselben Namen und n "XML-Datensatzmengen" mit unterschiedlichen Namen, dann hat man doch genuegend Information, oder nicht?
                  Man bindet den (X)HTML-Dokumentenrahmen an das XML-Stammelement. Und dann bietet die Oberflaeche des "XSL-Designers" (angenommen, ein exemplarisches XML liegt vor) noch eine Datenbindung fuer beispielsweise vorgefertigte Elemente wie das DataGrid und "die ueblichen von 'MS Frontpage' bekannten Features". Soz. ein XML-basiertes "Frontpage".   :-)

                  Das Resultat muss dann ja nicht ein XSL sein, das allerbestes (X)HTML bedingt, aber valides (X)HTML und eine brauchbare Grundlage fuer's Fein-Tuning muesste doch rauskommen koennen? Ich bin ehrlich gesagt ueberrascht, dass es so ein Produkt nicht gibt, wie Du sagst.

                  Gruss,
                  Lude

                  1. Hallo,

                    ja, wie soll das gehen:
                    Jetzt zum von mir angedachten "XSL-Designer": Wenn das XML eine feste Struktur hat, also beispielsweise ein Stammelement mit immer demselben Namen und n "XML-Datensatzmengen" mit unterschiedlichen Namen,

                    Tja ...
                    Dann mach mal Templates für Elemente dessen Namen du nicht kennst.
                    <xsl:template match="[name() = 'taete_ich_auch_gerne_wissen']"> ?
                    oder
                    <xsl:template match="*">
                    <div>
                    ...
                    ??

                    dann hat man doch genuegend Information, oder nicht?

                    Da hat man eine Menge an Elemente mit unbekannten Namen. Also irgendein XML. Dass dabei die Struktur immer gleich ist, spielt dann auch keine Rolle.

                    Man bindet den (X)HTML-Dokumentenrahmen an das XML-Stammelement. Und dann bietet die Oberflaeche des "XSL-Designers" (angenommen, ein exemplarisches XML liegt vor)

                    Wenn du davon ausgehen kannst, dass du eine Menge an _bekannten_ Elementen hast: ja. Sonst: <xsl:if test="$kristallkugel = 'ich sehe, ich sehe'">

                    noch eine Datenbindung fuer beispielsweise vorgefertigte Elemente wie das DataGrid und "die ueblichen von 'MS Frontpage' bekannten Features". Soz. ein XML-basiertes "Frontpage".   :-)

                    Das Problem: ich kenne Frontpage überhapt nicht, also weiss ich auch nicht was dort ein "DataGrid" sein soll.
                    Aber das ist eigentlich auch egal: es geht nur um den (aller ersten) Stylesheet: den muss man immer noch selber schreiben, nachher kann man dies ja als Template für alle XML-Dateien nehmen, sofern diese aus bekannten Elementen besteht.
                    Databinding ist wieder so ein buzzword, wie XML vor 2, 3 Jahren war.

                    Aber ein Problem habe ich nocht immer mit deinem Ansatz: mir fehlt noch der genaue Verständnis dazu, was du in diesem Zusammenhang von einem Tool/Programm erwartest. Es gibt kein Programm, das dir ein XSLT-Sheet schreibt, sie alle bieten dir nur dabei Unterstützung an.
                    Was du dann mit der fertigen XSL-Sheet machst ist eine andere Frage, da kannst du natürlich sagen, dass auf ein aus der DB generiertes XML dein XSLT angewendet werden soll.

                    Vielleicht reden wir hier aneinander vorbei?

                    Grüße
                    Thomas

                    1. Hi,

                      Aber ein Problem habe ich nocht immer mit deinem Ansatz: mir fehlt noch der genaue Verständnis dazu, was du in diesem Zusammenhang von einem Tool/Programm erwartest. Es gibt kein Programm, das dir ein XSLT-Sheet schreibt, sie alle bieten dir nur dabei Unterstützung an.
                      Was du dann mit der fertigen XSL-Sheet machst ist eine andere Frage, da kannst du natürlich sagen, dass auf ein aus der DB generiertes XML dein XSLT angewendet werden soll.

                      Vielleicht reden wir hier aneinander vorbei?

                      bestimmt, oder vielleicht doch nicht?   ;-)

                      Hmja, also Mitte der Neunziger hatte ich fuer einige Jahre das Vergnuegen mit "VB" einige Projekte umzusetzen. Die Sache lief ganz gut, dank 'RAD' ((R)apid A(<irgendwas>) (D)evelopment). Kaum wartbare, schlecht skalierbare und nicht weiterentwickelbare Systeme kamen da heraus. (Die Abnehmer waren aber im Grossen und ganzen nicht unzufrieden.)
                      Man hantierte da mit Datenbindung, was damals bedeutete irgendwelche "Steuerelemente" an Datensatzmengen zu binden, die als Prototyp zur Entwurfszeit geladen wurden.

                      Nun schreiben wir das Jahr 2004. Aus Datensaetzen sind Datensatzmengen geworden und aus diesen "Dokumente" (oder gibt es bessere Woerter?). - Da ich dem 'RAD'-Ansatz gar nicht mal so skeptisch gegenueberstehe (vorausgesetzt, dass mindestens ein Entwickler noch weiss, was wirklich passiert), habe ich meine Erfahrungen einfach mal ins Jahr 2004 projiziert. Das 'RAD'-Tool, das ich erwarte, wuerde halt als Datenquelle ein XML erwarten und ansonsten die normale "Frontpage"-Funktionalitaet (".NET"-Studio von mir aus) bieten.

                      Dank XML(TM) koennte sogar etwas vernuenftiges dabei herauskommen.

                      Ich werde in den naechsten Wochen 'XML Spy 2004 E.' aufmerksam auf Leistungsmerkmale der o.g. Art testen. Vielleicht gibt's aber noch andere "Tools"?

                      Gruss,
                      Lude

                      ---
                      "Realitaet ist das, was noch da ist, wenn man aufgehoert hat zu gleuben."

                      1. Hallo,

                        Vielleicht reden wir hier aneinander vorbei?

                        bestimmt, oder vielleicht doch nicht?   ;-)

                        Man hantierte da mit Datenbindung, was damals bedeutete irgendwelche "Steuerelemente" an Datensatzmengen zu binden, die als Prototyp zur Entwurfszeit geladen wurden.

                        Dank XML(TM) koennte sogar etwas vernuenftiges dabei herauskommen.

                        OK, jetzt verstehe ich was du meinst.
                        Na ja. Ehrlichgesagt ich halte nicht viel von diem Ansatzt eben weil wie du sagt: "Kaum wartbare, schlecht skalierbare und nicht weiterentwickelbare Systeme kamen da heraus."

                        Ich bin mir auch nicht sicher, dass es überhapt möglich ist was du möchtest, denn ein XSLT-Sheet erfordert nun mal eine bestimmte Aufbau, damit der XSLT-Prozessor die Transformation durchführen kann. Da wird es nicht möglich sein, dass man mal eine for-each Schleife oder eben einen anderen Template etc. nur so alleinstehend an irgendwelche XML-Elemente bindet, ohne das ein kompletter XSLT-Sheet vorhanden wäre.

                        "Aus Datensaetzen sind Datensatzmengen geworden und aus diesen "Dokumente" (oder gibt es bessere Woerter?)."

                        Ich vermeide meistens das Wort Dokumet im Zusammenhang mit Daten die als XML aus einer DB kommen. Das sind (für mich) eben keine Dokumente sondern in der Tat nur irgendwelche XML-Daten.
                        Aber ich bin in diesem Zusammenhang auch etwas empfindlich (siehe Archiv) ;-)

                        Grüße
                        Thomas