[XSL] Break

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

  • [XSL] Break

    Also ich hab ein paar Templates für einen Newsletter gemacht und alles klappt wunderbar. Multipart alles schön und gut. Nur wenn der User einen Break im Formular macht wird das in der html.xsl nicht übernommen in der text.xsl schon.

    Wie kann ich ihm in der xsl Datei sagen das er dort einen <br /> reinmachen soll wo der User n neuen Absatz anfängt?

    Muss ich was beim encoding ändern?
    Lurchi ! Lurchi ! Lurchi !

  • #2
    http://www.oxygenxml.com/archives/xs.../msg00532.html

    Kommentar


    • #3
      Dumme frage wo muss ich das einfügen??

      <xsl:analyze-string select="." regex="\n">
      <xsl:matching-substring><br/></xsl:matching-substring>
      Lurchi ! Lurchi ! Lurchi !

      Kommentar


      • #4
        in deinen code. bin ich hellseher?

        Kommentar


        • #5
          lol ne ich mein wo in die XSL oder XML? kappiers grad net so.
          Lurchi ! Lurchi ! Lurchi !

          Kommentar


          • #6
            du hast natürlich bereits nachgeschlagen, was xsl:analyze-string macht und weißt immer noch keine antwort. hast du keine dokumentation zu hand? wie schreibst du denn deinen code? aus dem bauch?

            Kommentar


            • #7
              anhand deiner signatur gehe ich davon aus, dass du xslt via php transformieren laesst. richtig?
              dann kann ich dich enttaeuschen, denn php kennt dank libxslt nur xslt 1.0 und der angegebene code ist 2.0.

              xslt 1.0 kompatibel kannst du etwas in dieser art nutzen
              Code:
              <xsl:template name="text_nl">
                  <xsl:param name="text" />
                  <xsl:variable name="text_transformed">
                      <xsl:call-template name="nl2br_win">
                          <xsl:with-param name="string_win" select="$text"/>
                      </xsl:call-template>
                  </xsl:variable>
                  <xsl:call-template name="nl2br_unix">
                      <xsl:with-param name="string_unix" select="$text_transformed"/>
                  </xsl:call-template>
              </xsl:template>
              
              <xsl:template name="nl2br_win">
                  <xsl:param name="string_win" select="string_win"/>
                  <xsl:choose>
                      <xsl:when test="contains($string_win, '&#38;#13;&#38;#10;')">
                          <xsl:value-of select="substring-before($string_win, '&#38;#13;&#38;#10;')"/>
                          <br/>
                          <xsl:call-template name="nl2br_win">
                              <xsl:with-param name="string_win" select="substring-after($string_win, '&#38;#13;&#38;#10;')"/>
                          </xsl:call-template>
                      </xsl:when>
                      <xsl:otherwise>
                          <xsl:value-of select="$string_win"/>
                      </xsl:otherwise>
                  </xsl:choose>
              </xsl:template>
              
              <xsl:template name="nl2br_unix">
                  <xsl:param name="string_unix" select="string_unix"/>
                  <xsl:choose>
                      <xsl:when test="contains($string_unix, '&#38;#13;')">
                          <xsl:copy-of select="substring-before($string_unix, '&#38;#13;')"/>
                          <br/>
                          <xsl:call-template name="nl2br_unix">
                              <xsl:with-param name="string_unix" select="substring-after($string_unix, '&#38;#13;')"/>
                          </xsl:call-template>
                      </xsl:when>
                      <xsl:otherwise>
                          <xsl:copy-of select="$string_unix"/>
                      </xsl:otherwise>
                  </xsl:choose>
              </xsl:template>
              aufgerufen dann mit

              Code:
              <xsl:call-template name="text_nl">
                  <xsl:with-param name="text" select="." />
              </xsl:call-template>
              1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

              /(bb|[^b]{2})/

              Kommentar


              • #8
                Danke probier ich gleich mal aus..
                Zuletzt geändert von Anbu; 18.07.2007, 13:52.
                Lurchi ! Lurchi ! Lurchi !

                Kommentar


                • #9
                  Hat geklappt hat anfangs an den ASci Zeichen gelegen musste andere nehmen..


                  Aber nochmals danke
                  Zuletzt geändert von Anbu; 19.07.2007, 09:17.
                  Lurchi ! Lurchi ! Lurchi !

                  Kommentar


                  • #10
                    Also er macht jetzt zwar breaks an den Stellen wo der User auch einen break macht, aber wenn ich zum beispiel einen Doppelten Break also einen Absatz mach, macht er keinen break.

                    Was stimmt denn nicht?
                    PHP-Code:
                    <xsl:template name="nl2br_win">
                        <
                    xsl:param name="string_win" select="string_win"/>
                        <
                    xsl:choose>
                            <
                    xsl:when test="contains($string_win, '&#xa; ')">
                                <
                    xsl:value-of select="substring-before($string_win, '&#xa; ')"/>
                                <
                    br/>
                                <
                    xsl:call-template name="nl2br_win">
                                    <
                    xsl:with-param name="string_win" select="substring-after($string_win, '&#xa; ')"/>
                                </
                    xsl:call-template>
                            </
                    xsl:when>
                            <
                    xsl:otherwise>
                                <
                    xsl:value-of select="$string_win"/>
                            </
                    xsl:otherwise>
                        </
                    xsl:choose>
                    </
                    xsl:template
                    Wenn ich das Ascii Zeichen #13; anstatt #xa; benutze macht er mir nicht mal einfache breaks geschweige denn von doppelten breaks die jetzt mein Problem sind.


                    Edit:

                    Hab die Lösung:

                    PHP-Code:
                    <xsl:template name="nl2br_win">
                        <
                    xsl:param name="string_win" select="string_win"/>
                        <
                    xsl:choose>
                            <
                    xsl:when test="contains($string_win, '&#xa; ')">
                                <
                    xsl:value-of select="substring-before($string_win, '&#xa; ')"/>
                                <
                    br/>
                                <
                    xsl:call-template name="nl2br_win">
                                    <
                    xsl:with-param name="string_win" select="substring-after($string_win, '&#xa; ')"/>
                                </
                    xsl:call-template>
                            </
                    xsl:when>
                            <
                    xsl:otherwise>
                                <
                    xsl:value-of select="$string_win"/>
                            </
                    xsl:otherwise>
                        </
                    xsl:choose>
                    </
                    xsl:template
                    Jetzt hab ich noch eine Frage. Wie sieht die Unix variante dafür aus??
                    Zuletzt geändert von Anbu; 19.07.2007, 12:09.
                    Lurchi ! Lurchi ! Lurchi !

                    Kommentar

                    Lädt...
                    X