Announcement

Collapse
No announcement yet.

Allgemeine Frage zu XML --> XSLT = XSLT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Allgemeine Frage zu XML --> XSLT = XSLT

    Gibt es irgendwie eine gute Herangehensweise, wie man aus XML und XSLT wieder ein neues XSLT generiert???

    Beispiel:

    Ich habe eine End XSLT programmiert. So soll es ausschauen.
    Diese XSLT hat aber eine Variable die dann von der XML Datei stammt.

    Das heißt nur ein kleiner Teil ist dynamisch.

    Muss ich jetzt wirkich jedes Element mit Attribut über <xsl:attribute> und <xsl:element> dazu noch mit Namespace xsl generieren oder gibt es einen leichteren Weg??????????????

    Ich hatte mir mal das überlegt: Ich kommentiere einfach den XSLT Teil, den ich nicht brauche, aus. Über eine andere XSLT lösche ich die Kommentare weg und habe mein finales XSLT.

    Einziger Nachteil: Ich brauche zwei XSLTs oder kann man das auch in einer machen???

    Danke
    Tamer
    Zuletzt editiert von Tamer; 13.11.2009, 15:28.

  • #2
    Ein einfaches Beispiel würde das Problem klarer machen.

    Comment


    • #3
      Hier meine Frage bzgl. der Allgemeinheit

      Man macht das über <xsl:element> und <xsl:attribute> machen.
      Leider funktioniert das mit <xsl:text disable-output-escaping="yes"> nicht :-( Da der xsl: Namespace sogar innerhalb des text oder comment Elements erkannt wird.

      Na super jetzt fällt mir nichts mehr ein als das nur so zu machen:

      XSLT + (XML hier egal, ist ja nur ein Beispiel)

      <?xml version="1.0"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xslutput method="xml" encoding="UTF-8" indent="yes" version="1.0"/>
      <xsl:template match="/">
      <xsl:element name="xsl:stylesheet">
      <xsl:attribute name="version">1.0</xsl:attribute>
      <xsl:element name="xslutput">
      <xsl:attribute name="method">xml</xsl:attribute>
      <xsl:attribute name="version">1.0</xsl:attribute>
      <xsl:attribute name="encoding">UTF-8</xsl:attribute>
      <xsl:attribute name="indent">yes</xsl:attribute>
      </xsl:element>
      <xsl:element name="xsl:template">
      <xsl:attribute name="match">/</xsl:attribute>
      <xsl:element name="xsl:apply-templates"/>
      </xsl:element>
      </xsl:element>
      </xsl:template>
      </xsl:stylesheet>

      = XSLT:

      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xslutput method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      <xsl:template match="/">
      <xsl:apply-templates/>
      </xsl:template>
      </xsl:stylesheet>
      Zuletzt editiert von Tamer; 14.11.2009, 16:54.

      Comment


      • #4
        Zum Ereugen von XSLT mit XSLT gibt es das Element xsl:namespace-alias:
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
          xmlns:xslt="http://www.w3.org/1999/XSL/TransformAlias">
        
          <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
          <xsl:namespace-alias stylesheet-prefix="xslt" result-prefix="xsl"/>
        
          <xsl:template match="/">
            <xslt:stylesheet version="1.0">
              <xslt:template match="/">...</xslt:template>
            </xslt:stylesheet>  
          </xsl:template>
        
        </xsl:stylesheet>
        Ergebnis:
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:template match="/">...</xsl:template>
        </xsl:stylesheet>
        Zuletzt editiert von Thomas Meinike; 14.11.2009, 18:50. Reason: Ausgabe ergänzt.

        Comment


        • #5
          Genial

          das ist genau das, was ich brauche.

          Comment

          Working...
          X