xsl versuchen ouput '<' im Gegensatz zu '<'
Update:
Das Problem weiterhin besteht, obwohl es nicht ganz das gleiche wie zuvor. Unten ist ein Beispiel von dem, was ist input, was ist output und das was ich haben will-Ausgang
Ein Beispiel für die Eingabe:
&lt;p&gt;&lt;span style=&quot;font-size: medium&quot;&gt;Product description text&lt;/span&gt;&lt;/p&gt;
Aktuellen Ausgabe:
<p><span style="font-size: medium">Product description text</span></p>
Beabsichtigte Ausgabe:
<p><span style="font-size: medium">Product description text</span></p>
.
Verwendung von CDATA geholfen hat, als es erlaubt mir die Eingabe '<' aber wie man an der obigen Ausgabe, auch wenn die Option " disable-output-escaping, es hat sich verändert in der Ausgabe
.
.
Ursprünglichen Frage:
Die Fehler ich erhalte, ist "'<', hexadezimaler Wert 0x3C, ist ein ungültiges Attribut Charakter"
Was ich versuche zu tun ist, ersetzen Sie alle vorkommen von < ; und > ; mit < und > bzw..
Halten Sie diese so einfach wie möglich, hier ist der code für nur: lt::
<xsl:variable name="lt">
<xsl:text><</xsl:text>
</xsl:variable>
<xsl:variable name="lthex">&lt;</xsl:variable>
<xsl:copy-of select="ew:replacestring(products_description/node(),$lthex,$lt)"/>
Ich habe versucht, verschiedene Dinge anstelle von text z.B. Wert-etc.
Ich weiß, es ist nichts falsch mit der code-Form und der vb-code verknüpft, um es, denn ich bin mit ihn mehrere Male zu ersetzen und Ausgabe anderswo
Das problem dabei ist aber, dass ich will < und > buchstäblich Ausgang, kein code, das ist dann zu sehen, indem Sie den browser und verändert
.
Wenn Sie weitere Informationen benötigen, fragt einfach (ich habe Mühe, dies zu erklären sehr gut)
Jede Hilfe wird dankbar sein
Wie sind Sie mit der Anwendung der transformation? Können Sie die XSLT?
InformationsquelleAutor dudledok | 2011-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil
<
illegal ist (und das ist der Grund, warum die app beschwert). Für>
, die Sie verwenden können:Die
CDATA
ist nicht wirklich notwendig. Verwenden Sie einfach<xsl:text disable-output-escaping="yes"><</xsl:text>
.das ist richtig. Allerdings finde ich verwirrend mittels einer Entität, etwas zu drucken, das sollte nicht sein.
Es ist schwer zu helfen, Sie mehr, ohne dass irgendein neues detail über Ihre XSLT-oder XML-input.
Nach der überprüfung der Quell-code es erscheint die Ausgabe stil < und > das, Was ich versuche zu tun ist, nehmen Sie die Beschreibung des Produkts, welche enthält eine Reihe von html-tags, aber diese tags enthalten < und > die müssen umgewandelt werden zu < und > so können Sie als html. Ich kann pass die Ausgabe über ms:node-set) so, dass es nicht nur text, aber das ist irrelevant in dem moment, wenn die hex-codes sind, kommt immer noch durch
InformationsquelleAutor Emiliano Poggi
Das ursprüngliche problem
Wirklich das, was Sie scheinen, zu haben ist doppelte Escapezeichen input, also statt nur einfache Ausgabe von text mit
disable-output-escaping="yes"
müssen Sie einige Möglichkeiten, das zu tun-string ersetzen. Klar, es scheint, dass Sie den Austausch mitew:replacestring()
Erweiterung-Funktion. Das problem ist, dass selbst wenn es Ihnen gelingt, Sie zu ersetzen&lt;
mit<
, das Ergebnis ist immer noch nur ein string und der<
Charakter bekommt, entkam auf die Ausgabe.Ihre original Ersatz-text war der code nicht wohlgeformt ist, weil
<
als solche gesehen wird als markup. Mitoder
gleichwertig sind und das problem beheben. Aber dies hilft nicht bei dem problem, dass die Ersatz-Zeichen noch ausgegeben wird, wie eine entity-Referenz. Mit
disable-output-escaping="yes"
hier in der definition hat keine Auswirkungen auf das problem.Diese code-Beispiele funktionieren nicht, da
disable-output-escaping="yes"
hat nur eine Auswirkung, wenn der Wert serialisiert wird, nicht, wenn eine variable zugewiesen bekommt.Eine mögliche Korrektur
Was Sie könnten versuchen, zu tun ist, speichern Sie Ihren text einbauen in eine variable
und geben dann den Wert dieser variable mit
disable-output-escaping="yes"
Eine andere Lösung ohne extension Funktionen
War ich in der Lage, verwandeln Sie Ihre Eingabe
dieser Ausgabe
mit einer leicht modifizierten version Jeni Tennison der Akronym Ersatz-Vorlage. In Ihrem Fall ist das Dokument mit dem Akronym Titel würde dann so Aussehen
Die erforderliche änderung würde sein, ändern Sie diesen Teil des Codes Beispiel
Aussehen
Diese Vorlage sollte in jedem Umwelt, denn es wird von XSLT 1.0-und es Bedarf keiner Erweiterung der Funktionen.
InformationsquelleAutor jasso
Edit: Es sieht aus wie Sie versuchen zu nehmen eine Serialisierung eines XML-oder HTML-Serialisierung als input anstatt einer XML-oder HTML-Serialisierung, und erwarten, dass es die Ausgabe in einer XML-oder HTML-Serialisierung?
Das richtige sein würde, um zu reparieren Ihre defekte input, aber sehen Wie unescape XML-Zeichen mit Hilfe von XSLT?
Haben Sie eine Art von Missverständnis. XSL übernimmt die XML-Eingaben und Ausgaben in HTML oder XML.
<
wird dargestellt als<
im serialisierten HTML und XML.Einer HTML-oder XML-Datei, die enthält eine
<
nicht einen tag beginnen ist eine falsche Serialisierung (nicht wellformed).<
ist die korrekte Darstellung von<
in ein HTML-oder XML-Datei.Einer HTML-oder XML-Datei ist nur eine Serialisierung der Daten, die er repräsentiert. Das ist es ist eine Ebene unterhalb der Daten, die er repräsentiert.
Sie sollten denken, der Inhalt des HTML-oder XML als was die Daten stellt (
<
), nicht, wie die Serialisierung der Daten (<
).Versuchen, statt zu erklären, warum Sie denken, dass
<
ist ein problem, so können wir korrigieren das Mißverständnis?InformationsquelleAutor Christoffer Hammarström