2009-08-10 7 views
2

Ich erspare Ihnen die Details, weil sie unnötig verwirrend sein würden. Lange Rede, kurzer Sinn: Ich benutze XSLT 1.0, um XSL-Dokumente zu generieren. Ich versuche, eine Variable mit einer literalen Zeichenfolge zu vergleichen, und diese Zeichenfolge kann Anführungszeichen und Apostrophe enthalten.Wie kann ich eine Zeichenfolge in XPath ausgeben, die sowohl Apostrophe als auch Anführungszeichen enthält?

Der Einfachheit halber wollen wir sagen, dass dieses Literal aus zwei Zeichen besteht: einem Zitat, gefolgt von einem Apostroph. In Wirklichkeit kann es wirklich jeder Text sein. Gibt es einen einfacheren Weg, dies zu tun:

als dies?

<xsl:variable name="str">"'</xsl:variable> 
<xsl:if test="$var = $str"> 

Ich habe XPath's specs geprüft und es scheint nicht ein Weg, um Zeichen zu entkommen, so dass die folgenden würde nicht Arbeit wie gewünscht:

<xsl:if test="$var = '&quot;&amp;apos;'"> 

Dank!

Antwort

2

es gibt keinen Weg, um es ordentlich in XPath 1.0 zu tun. In XPath 2.0 können Sie beide Arten von Anführungszeichen durch Verdoppeln umgehen.

+0

Leider habe ich vergessen zu erwähnen, dass ich auf XPath 1.0 beschränkt bin (ich habe gerade meine Frage bearbeitet, um es zu erwähnen), aber danke, dass ich daran erinnert habe, wie einfach mein Leben mit XSLT 2.0/XPath 2.0 wäre :) –

+0

wirklich toll zu sein, wenn anständige XSLT 2.0-Implementierungen auftauchen, insbesondere für .NET - ich stoße ständig auf diese Probleme. –

+0

Saxon.NET ist ziemlich gut, wenn es Ihnen nichts ausmacht 25Mb von IKVM in der Verteilung aufblähen ... –

1

& quot;& amp;&(!)apos; -sieht viel besser aus, aber was wollten Sie bekommen?

In jedem Fall: einmal habe ich Anwendung geschrieben, die sich mit der Herstellung von Javascript über XSLT beschäftigt. Das gleiche Problem mit großer Anzahl von & quot;, ... wir in zwei Arten gelöst:

  1. xsl:param, $q Deklarieren global - sehen kürzer als & quot;
  2. Use 'translate' XPath-Funktion, machen Annahme '!' - ist ein & quot; ist # ein & amp; ..
Verwandte Themen