Autor Zpráva
x
Profil *
ahoj,

problem "unterminated string literal", nemohu ho vyresit...., viceradkovy string

pomoci xslt sestavuji dynamicky atributy funkci v atributu onclick v html elementu,
vzdy je jednim parametrem dlouhy text dotahovany z db....

na strane serveru je pri pridavani z textarea text osetren, tudiz touto cestou pridavane zaznamy jsou bezproblemu,

no jo, ale dalsi cestou jak pridavat do db je rucne pres db nastroje, tudiz tento problem nastava prave zde...

ptam se, zdali se "unterminated string literal", lze osetrit na urovni xslt
peta
Profil
x
Bez konkretnich udaju nelze zjistit proc k chybe doslo, jaky text to byl a pod. Je mozne, ze mas chybu ve scriptu, nejakou uvozovku uprostred textu, ktera ukonci retezec. Viz pripad stareho PHP-RS. Vubec to nemusi souviset s XSLT.
x
Profil *
peta...

toto je vystup, kt. sestaven xslt sablonou

<tr onclick="testovaciFce('param1','param2','dlouhy
 predlouhy text');"</tr>


uvozovky,apostrofy jsou osetreny.... prave, chyba proste byla v tom, ze string byl viceradkovy

nicmene sem to obesel...., jednotlive hodnoty sem si ulozil do input.hidden.value na radce a predal fci input.value jako parametry a jejich spravne sparovani sem zajistil pomoci generate-id
x
Profil *
    <xsl:template match="/ciselnik/uroven/content/row" mode="datova-cast">
		<tr>
			<xsl:if test="/ciselnik/setting/double_click = 'true'"><xsl:attribute name="ondblclick">zavolejDalsiUroven();</xsl:attribute></xsl:if>
			<xsl:attribute name="onclick">
				<xsl:text>cis_selRow(this);naplnHodnoty(</xsl:text><xsl:apply-temp lates select="/ciselnik/uroven/header/column[@name]" mode="js-parametry-funkce"><xsl:with-param name="row" select="." /><xsl:with-param name="id" select="generate-id()"/></xsl:apply-templates><xsl:text>);</xsl:text>
 			</xsl:attribute>
.....
    </xsl:template>
    <!-- xsl:template match="/ciselnik/uroven/header/column[@name]" mode="js-parametry-funkce"><xsl:param name="row"/>'<xsl:value-of select="translate($row/column[@n=current()/@n],'\u000A','')" disable-output-escaping="yes"/>'.replace(new RegExp('\n', 'g',''))<xsl:if test="last() > position()"><xsl:text>,</xsl:text></xsl:if></xsl:template-->
    <xsl:template match="/ciselnik/uroven/header/column[@name]" mode="js-parametry-funkce">
    	<xsl:param name="row"/>
    	<xsl:param name="id"/>
    	document.getElementById('<xsl:value-of select="concat(@name,'_',$id)"/>').value<xsl:if test="last() > position()"><xsl:text>,</xsl:text></xsl:if>
    </xsl:template>
	<!-- tahle vomacka je kvuli tomu, ze kdyz je v db viceradkovy text, tak jsko hazi chybu 'interminated literal string' -->
	<xsl:template match="/ciselnik/uroven/header/column[@name]" mode="metadata-js-fce">
		<xsl:param name="row"/>
		<xsl:param name="id"/>
		<input id="{@name}_{$id}" type="hidden" value="{$row/column[@n=current()/@n]}"/>
	</xsl:template>

	<!--  
		generuje telo funkce, v kt. se value objektu naplni promennou, kt. odkazuje na parametry fce
	-->
        <xsl:template match="/ciselnik/uroven/header/column[@name]" mode="js-telo-funkce">
		document.getElementById('<xsl:value-of select="@name"/>').value = <xsl:value-of select="@name"/>;
	</xsl:template>
	

//js funkce je take dynamicky sestavoavna..., muze mit n parametru
function naplnHodnoty(param1,param2,param3){
getId(cosi).value = param1
...
...
}
Chamurappi
Profil
Reaguji na x:
uvozovky,apostrofy jsou osetreny....
Jestli jsi je ošetřil tím, že jsi přidal zpětné lomítko „\“, tak přesně stejně můžeš ošetřit i konec řádku.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0