2008 20. September 2008

TEXTAREA Collapse Problem in XSL / XSLT


Problemstellung:
Ich lief in dieses ein Problem in Bezug auf Textareas in XSLs. In einfachen Worten, das Problem, wenn Sie eine leere <textarea> Tag haben entsteht, dann wird es zu <textarea /> zusammenbrechen.
dh wenn Sie etwas wie das folgende in Ihrer XSL und der XML-Daten für die TextArea-Wert hatte, gibt nichts ...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

Als Browser nicht erkennen dies, wird es bewirken, dass der Rest des Formulars, um HTML in den Text-Bereich laufen.

MÖGLICHE LÖSUNGEN:

In der XSL, fügen Sie ein non-breaking-space () nach dem xsl: value tag.BEWARE, um Pflege dieser zusätzlichen Platz nehmen Sie hinzugefügt haben, während der Client-Seite Validierungen von diesem Gebiet.

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

Oder
<xsl:value-of select="concat (DESCRIPTION,'')"/>

Oder
Legen Sie eine <xsl:value-of select="@unknown" />-Tag zeigte auf ein unbekanntes Attribut. Dies zwingt den PHP-Parser XSLT, um ein Öffnen und Schließen Textbereich-Tag generieren, auch wenn es nichts dazwischen hat.

Oder
Legen Sie eine <xsl:text> Feld mit einem Platz, um einen Schluss-Tag zu erzwingen.

Allerdings, auch wenn die oben genannten Lösungen scheinen mag, um das Problem zu beheben, bin ich immer noch nicht überzeugt, dass sie Recht haben und besten Möglichkeiten, um es zu beheben. Wenn es eine andere bessere Art der Fixierung dieser Marotte, Bitte lass es uns wissen.


2008 4. August 2008

Ein Problem mit position () in XSL ... oder doch nicht?

Ich hatte dieses Problem strage während der Erstellung einer XSL heute. Suchte nach Antworten im gesamten Netz, bekam aber nicht fündig geworden .... Eigentlich habe ich erraten! Ich DINT wissen, was mein Problem war, so was muss ich achten?

Auf jeden Fall! Nur für den Fall haben Sie dieses sehr gleiche Problem haben und irgendwie durch die Macht des FORCE Sie es geschafft, auf dieser Seite landen ... Sie würden mir danken Tonnen ... Und wenn Sie zufällig auf dieser Seite aus irgendeinem seltsamen Schicksal gelandet sind und Sie gerade sind ein XSL-Entwickler, Machen Sie mal eine Anmerkung des mittlerweile auf, für die Zukunft verursachen, wenn eines Tages, Sie dieses Problem zu begegnen, dann ist die Kraft vielleicht nicht mit euch sein.

Problemstellung:
Ich habe diese XML, wo es zwei Knoten mit mehreren Objekte enthalten und die Elemente zwischen diesen zwei Knoten eine Eins-zu Eins-Entsprechung. Im Beispiel unten, jedes Element im Knoten <array name="PLAYURL" /> bezieht (entsprechend Position) auf einen Posten im Knoten <array name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

Nun, ich habe eine Schleife, wo ich eine Schleife durch <array name="SITENAME">, und ich, um das entsprechende Element (an der entsprechenden Position) in <array name="PLAYURL"> erhalten möchten,

Was würden Sie normalerweise versuchen zu tun ist ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

SORRY! Diese nicht funktionieren ... Ah!! Überascht ...

Jetzt würden Sie wahrscheinlich wollen versuchen, so etwas wie dieses ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

Und wieder diese nicht funktionieren ... Jetzt am Kopf kratzen und versuchen, jeden, der etwas weiß, Sie denken, XSL und wenden könnte eine Hilfe sein ... Sie versuchen, jede andere Option ... und es immer noch nicht funktionieren ... Naja! Thats, was mir passiert ist atleast ...

AUSSCHLIEßEN DESPAIR! TRY THIS

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

DONT ASK ME warum es funktioniert. Weil ich derzeit einen richtigen Grund haben ... wenn Sie das tun! Bitte einen Kommentar zu sinken. Es könnte sein, ziemlich nützlich. Auch! Wenn Sie besseren Titel für diesen Posten haben, tun Sie mir eine Zeile :)


NDK Hause | Ausdruck ihrer IT | Ausdruck Gaumen | Penmenship Ausdruck | Ausdruck Awe | mich auszudrücken