2008 September 20, 2008

TEXTAREA Skjul problem i XSL / XSLT


PROBLEM ERKLÆRING:
Jeg løb ind i et problem, med hensyn til tekstområder i XSLs. I simple ord, opstår problemet, når du har en tom <textarea> tag, så det vil kollapse det <TEXTAREA />.
dvs hvis du havde noget i retning af følgende i din XSL og XML data for TEXTAREA værdi, returnerer ingenting ...

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

Da browsere ikke anerkender dette, vil det medføre resten af ​​formularen HTML til at løbe ind i tekstområdet.

Mulige løsninger:

I XSL, tilføje en non-breaking-rum () efter xsl: value tag.BEWARE, til at tage sig af denne ekstra plads du har tilføjet, under klientsiden validering af dette felt.

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

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

Eller
Indsæt en <xsl:value-of select="@unknown" /> tag peger på en ukendt attribut. Dette vil tvinge PHP XSLT parser til at generere en åbning og lukning tekstområde tag, selv om det ikke har noget i mellem.

Eller
Indsæt en <xsl:text> felt, der indeholder et rum til at tvinge en afsluttende tag.

Men selvom de ovennævnte løsninger kan synes at løse problemet, er jeg stadig ikke overbevist om, at de har ret og de bedste måder at løse det. Hvis der er nogen anden bedre måde at fastsætte denne særhed, Please lad os det vide.


2008 August 4, 2008

Et problem med position () i XSL ... eller er det?

Jeg havde denne strage problem mens du opretter en XSL dag. Søgte efter svarene i hele nettet, men kunne ikke finde nogen .... Faktisk tror jeg! Jeg fordybning ved, hvad mit problem var, så hvad skal jeg kigge efter?

Anyway! Bare i tilfælde af at du har dette meget samme problem også, og en eller anden måde ved magt FORCE du formåede at lande på denne side ... du vil takke mig tons ... Og hvis du ved et uheld er landet på denne side for nogle mærkelige skæbne og du tilfældigvis til at være en XSL udvikler, DO gøre et notat om dette nu, TIL FREMTIDEN årsag, hvis en dag, du står overfor dette problem, så FORCE måske ikke være sammen med dig.

Problem erklæring:
Jeg har denne XML, hvor der er to noder med flere elementer i det, og de elementer mellem disse to knudepunkter har en 1-1 korrespondance. I eksemplet nedenfor, hvert element i det knudepunkt <array name="PLAYURL" /> vedrører (tilsvarende position) til et element i det knudepunkt <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>

Nu har jeg en løkke, hvor jeg løkken gennem <array name="SITENAME">, og jeg ønsker at få den tilhørende post (ved den tilsvarende position) i <array name="PLAYURL">,

Hvad ville du den normalt forsøge gøre, er ...

<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>

DESVÆRRE! DETTE wont arbejde ... Ak! Surpised ...

Nu ville du sikkert lyst til at prøve, noget som dette ...

<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>

Og Igen wont arbejde ... Nu kan du skrabe dit hoved, forsøger at kontakte alle, som du tror, ​​kender nogle XSL og kunne være til nogen hjælp ... du forsøger hver anden løsning ... og alligevel wont arbejde ... Nå! Thats hvad der skete med mig atleast ...

DONT Fortvivlelse! Prøv det

<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 hvorfor det virker. Årsag jeg dont have ret til grund ... hvis du gør! Undlad venligst at smide en kommentar. Det kan være temmelig nyttigt. Også! hvis du har en bedre titel til dette indlæg, så send mig en linje :)


NDK hjem | Udtrykke IT | udtrykke Smag | udtrykke Penmenship | udtrykke Awe | udtrykke mig