2010-05-22 8 views
41

Ich möchte einfach Zitat um $ ID-Variable in der folgenden xsl: Wert-von xsl Statment ausgeben.Escape-Anführungszeichen in xslt concat-Funktion

<xsl:value-of select="concat('process[@Ref=',$ID,']')"></xsl:value-of> 

derzeit druckt es

[email protected]=87799989 

Bitte lassen Sie mich wissen, wie kann ich dies erreichen.

Vielen Dank im Voraus, Keshav

+0

Gute Frage (+1). Siehe meine Antwort für eine vollständige Lösung. :) –

+0

Gute Frage (und antwortete dankbar!); Das hat mich verrückt gemacht! – monojohnny

Antwort

28

Verwenden &apos;?

<xsl:value-of select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of> 

Bearbeiten: Siehe Dimitre's answer für eine bessere Lösung.

+0

hi, danke, das hat für mich funktioniert – keshav84

+6

Es ist merkwürdig das hat funktioniert; als ' sollte entschlüsselt werden äquivalent zu einem Literal '. Vielleicht eine fehlerhafte XSLT-Engine? –

+6

Doesnt Arbeit für mich –

34

In XPath 1.0:

Sie können die integrierte Einheiten verwenden &apos; und &quot;

In XSLT 1.0:

Alternativ können Sie Ihre $Q und $APOS Variablen definieren (lege den Inhalt (das wörtliche "oder das wörtliche" Zeichen) in den Körper der xsl:variable, nicht in die select attri bute).

In XPath 2.x (dies bedeutet auch XSLT 2.x und XQuery 1.x)

einfach einen Apostroph entweichen durch zwei benachbarte Apostroph eingeben, um ein Angebot zu entkommen durch zwei benachbarte Anführungszeichen eingeben, as defined by the XPath 2.0 language

+1

Könnten Sie bitte Beispiele geben? (Ein Beispiel sagt mehr als 1000 Wörter und drückt Ihre Antwort an die Spitze). Danke –

+1

@RichardGomes, Sehen Sie dieses: http://Stackoverflow.com/a/7617563/36305 oder dieses: http://Stackoverflow.com/a/3453956/36305, oder dieses: http://Stackoverflow.com/ a/8783655/36305 –

4
<xsl:value-of 
select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of> 

das funktioniert nicht für mich. Meine Lösung ist:

<xsl:variable name="apos">'</xsl:variable> 
<xsl:value-of select="concat('process[@Ref=',$apos,$ID,$apos,']')"></xsl:value-of> 
+0

Ich war skeptisch, aber das funktioniert - das Doppelzitat im Klartext enthält die Select-Anweisung und die codierten Doppelwörter werden vom Parser verbraucht - nice – Paxic

31

Um auf Dimitre Antwort erweitern Sie diese Lösung in XSLT verwenden können Text "mit" in meinem Titel.

+2

Die Variable-Methode funktioniert und sieht am besten lesbar (IMHO). – monojohnny

+0

Dies ist das zweite Mal, dass ich mit dieser Lösung viel Zeit für Trial and Error und Debugging verschwendet habe. – GuruM

+0

Scheint in XSLT 1.0 und 2.0 zu arbeiten, was mir gefallen hat, denn dann kann ich es in eine common.xslt Datei schreiben. –

0

Leicht Beispiel

 <xsl:variable name="varTitle" select="title" /> 
<xsl:variable name="APOS">'</xsl:variable> 
<xsl:value-of select="translate($varTitle, 'any text', $APOS)"/> 

ersetzen „Das wird wäre jeder:

<xsl:value-of select="concat(&quot;process[@Ref='&quot;,$oidConstant,&quot;'&quot;)"></xsl:value-of>