26. marts 2008 - 16:12
Der er
15 kommentarer
brug af ' eller '
Jeg har brug for at outputte ' eller ' istedet for en apostrof i meta sektionen paa en html side via xslt. Der er ingen problemer med fx &. Hvis jeg fx har foelgende: <xsl:variable name="aposEscape">' & '</xsl:variable> <xsl:element name="meta"> <xsl:attribute name="name">DC.title</xsl:attribute> <xsl:attribute name="content"> <xsl:value-of select="$aposEscape" /> </xsl:attribute> </xsl:element> outputtes <meta name="DC.title" content="' & '" /> Hvorfor er det kun apostroffer (og &qout;) der bliver lavet om?
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
31. marts 2008 - 15:26
#1
1: dublin core meta tags er vist lidt outdated :) 2: <xsl:variable name="aposEscape"><![CDATA[' & ']]></xsl:variable>
31. marts 2008 - 15:52
#2
Dublin core bliver brugt pga det soegemodul jeg benytter, saa der er ingen vej udenom ;) Din loesning virkede naesten. ved at indsaette <xsl:variable name="aposEscape"><![CDATA[']]></xsl:variable> faar jeg nu &apos; dvs, & tegnet laves om til & saa hvad goer jeg nu for at beholde mit & som et & tegn?
31. marts 2008 - 16:45
#3
<![CDATA[ '¨´#"!¤%"#¤&% &&&& & osv >> ><<<<< ]]> Men tager man ex: <xsl:variable name="htmlEncoded"><[CDATA[']]> Prøv så: <xsl:value-of select="$htmlEncoded" /> // vil udskrive ' <xsl:value-of select="$htmlEncoded" disable-output-escaping="true" /> // som vil htmldecode den.. Altså man blander ikke htmlencoded tegn sammen med ikke htmlencoded tegn, det vil skabe forvirring. (eller xml entities om man vil) Håber du er med. /JJ
31. marts 2008 - 16:45
#4
<xsl:variable name="htmlEncoded"><[CDATA[']]></xsl:variable>
01. april 2008 - 11:54
#5
Hvis jeg foelger dit eksempel saa har jeg nu <xsl:variable name="aposEscape"><![CDATA[']]></xsl:variable> <xsl:element name="meta"> <xsl:attribute name="name">DC.title</xsl:attribute> <xsl:attribute name="content"> <xsl:value-of select="$aposEscape" /> </xsl:attribute> </xsl:element> Men i kildekoden faar jeg stadig <meta name="DC.title" content="&apos;" /> som output! Ogsaa selvom jeg tilfoejer disable-output-escaping="yes"
01. april 2008 - 12:04
#6
hold on, jeg tester lige selv..
01. april 2008 - 12:11
#7
doh apos er kun en xml entitet og ikke en html.. nok derfor :), finder lige løsning.. Der skal altså være en apostrof (') i dit metatag og ikke ' Det er selvfølgeligt ikke så heldig en problem stilling men jeg skal lige forstå det korrekt: Du modtager <node>Anders's hat</node> og vil have det til at stå <meta name="DC.title" content="Anders's hat" /> Right? /JJ
01. april 2008 - 12:46
#8
Mange tak for din hjaelp og taalmodighed indtil videre ;) men det er ikke helt det jeg vil opnaa. Jeg har teksten Anders's hat, men vil lave det om til <meta name="DC.title" content="Anders's hat" /> da mit soegemodul ikke kan finde ud af at indeksere titler med apostroffer, men kun indekserer titlen indtil apostroffen og saa dropper resten.
01. april 2008 - 13:05
#9
doh.. det virker jo fint med dit første forslag : <xsl:variable name="aposEscape"><![CDATA[']]></xsl:variable> <xsl:value-of select="$aposEscape" disable-output-escaping="yes"></xsl:value-of> Men du kan af min bedste overbevisning ikke lave ' om til ' uden at bruge en replace funktionalitet. Her er den løsning jeg finder smykkest: <xsl:variable name="x"><![CDATA[Anders's hat]]></xsl:variable> <xsl:value-of select="$x"></xsl:value-of> <xsl:variable name="x2"> <xsl:call-template name="replace-string"> <xsl:with-param name="text" select="$x"></xsl:with-param> <xsl:with-param name="to"><![CDATA[']]></xsl:with-param> <xsl:with-param name="from"><![CDATA[']]></xsl:with-param> </xsl:call-template> </xsl:variable> <xsl:value-of select="$x2" disable-output-escaping="yes" /> <!-- NY TEMPLATE --> <!-- reusable replace-string function --> <xsl:template name="replace-string"> <xsl:param name="text"/> <xsl:param name="from"/> <xsl:param name="to"/> <xsl:choose> <xsl:when test="contains($text, $from)"> <xsl:variable name="before" select="substring-before($text, $from)"/> <xsl:variable name="after" select="substring-after($text, $from)"/> <xsl:variable name="prefix" select="concat($before, $to)"/> <xsl:value-of select="$before"/> <xsl:value-of select="$to"/> <xsl:call-template name="replace-string"> <xsl:with-param name="text" select="$after"/> <xsl:with-param name="from" select="$from"/> <xsl:with-param name="to" select="$to"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template>
01. april 2008 - 13:07
#10
og det er ofte noget lettere at sætte attributter gennem <xsl:variable name="x" select="'test'" /> <meta name="DC.subject" content="{$x}" /> altså {} fortæller det er xslt i atributter. /JJ
01. april 2008 - 14:33
#11
Yesyes, replace funktionaliteten er lavet, mit problem opstod da jeg skulle have apostroffen lavet om til ' eller ' Og jeg har stadig problemer. Hvis jeg fodrer min replacer med foelgende: <xsl:with-param name="text" select="sc:fld('title',.)" /> <xsl:with-param name="from"><![CDATA[']]></xsl:with-param> <xsl:with-param name="to"><![CDATA[']]></xsl:with-param> Hvor $text er "A Bankrupt's Imperial's Agenda", saa faar jeg foelgende output ligemeget om jeg har disable-output-escaping sat til "yes" eller "no": <meta name="DC.title" content="A Bankrupt&#39;s Imperial&#39;s Agenda" />
01. april 2008 - 14:43
#12
<!-- Laver & og de andre html encoded om --> <xsl:variable name="textDecoded"><xsl:value-of select="sc:fld('title', .)" disable-output-escaping="true"/></xsl:variable> <!-- Erstatter ' --> <xsl:with-param name="text" select="$textDecoded" /> <xsl:with-param name="from"><![CDATA[']]></xsl:with-param> <xsl:with-param name="to"><![CDATA[']]></xsl:with-param>
01. april 2008 - 14:44
#13
jeg ved ikke om du bare kan : <xsl:with-param disble-output-escaping="true" name="text" select="sc:fld('title',.)" /> <xsl:with-param name="from"><![CDATA[']]></xsl:with-param> <xsl:with-param name="to"><![CDATA[']]></xsl:with-param> Kan se du også arbejder med sitecore :) /J
01. april 2008 - 14:45
#14
ellers kan du lave den disable-output-escaping som en parameter mere på din replace-string template.. altså lave en true/false værdi og paste med ned i templaten, og udfra den endten disable escaping eller ej. /JJ
01. april 2008 - 14:51
#15
før du replacer vel og mærket.. ellers: fra: Peter & Anders's hat [Replace] til: Peter & Anders' hat; [disable output escape] til Peter & Anders&#39; hat -> altså den erstatter også & tegnet i ' ved disable-output-escaping.
Kurser inden for grundlæggende programmering