Konvertieren von string zu Knoten-set
In meiner xsl-Datei,
Ich erhalte ein separates xml-Dokument (neben dem Haupt-xml-Dokument
ich bin transformieren) als string-parameter (param)
sagen, meine param name ist seconddoc
<xsl:param name="seconddoc"></xsl:param>
und der param Wert ist folgende (wieder, ich bin immer das ganze als string)
<products>
<product>
<id>1</id>
<name>pro-1</name>
</product>
<product>
<id>2</id>
<name>pro-2</name>
</product>
<product>
<id>3</id>
<name>pro-3</name>
</product>
</products>
Kann ich drucken Sie das gesamte Zeichenfolge wie folgt
<xsl:value-of select="$seconddoc" />
Aber ich möchte, Durchlaufen die Daten (string), anstatt gesamten Wert auf einmal.
mein end-Ziel ist es die Daten zu laden, um eine select-option.
Ich müde wie diese:
<select>
<xsl:for-each select="$seconddoc/products/product">
<option value="{id}">
<xsl:value-of select="name" /></option>
</xsl:for-each>
</select>
aber ich bin immer TransformerException. "Ungültige Konvertierung von 'java.lang.String' zu 'node-set'.
update:
Dies ist, was ich in meiner jsp-Seite
<x:transform xml="${mainxmldoc}" xslt="${xslt}">
<x:param name="seconddoc" value="<%=xmlString %>"/>
</x:transform>
- Welcher XSLT-Prozessor benutzt du und gibt es irgendeine Möglichkeit zu übergeben, den parameter als Knoten-set in den ersten Platz? Oder, ansonsten kann es passieren das Sie einen URI, um die zusätzlichen XML -, die könnten Sie dann Last mit der
document
Funktion? - Dank Ian Roberts. Ich bin neu in xslt. Ich glaube nicht, ich bin mit jedem zusätzlichen Prozessor. die xml-Datei, ich bin immer von einer jsp-Seite. und seine als dynamisch generiert. Also keine URI. Wie kann ich übergeben Sie es als Knotenmenge von JSP irgendeinen Vorschlag?
- Konnte Sie Bearbeiten die Frage, die auch den relevanten Teil der JSP-Seite, wo Sie den Aufruf der XSLT-Transformation?
- Dies ist, was ich in meiner JSP-Seite........ <x:Transformation xml="${mainxmldoc}" xslt="${xslt}"> <x:param name="seconddoc" value="<%=xmlString %>"/> </x:transform>
- Scheint ähnlich zu dieser Frage stackoverflow.com/questions/3959497/... Versuchen Sie es mit
exslt:node-set
aber ich bezweifle, dass es funktionieren wird. - ja ich bin es müde, dass (stackoverflow.com/questions/3959497/...) hat nicht funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit der
<x:parse>
tag, Sie können Ihre Inhalte auf diese Weise:Und dann auf den gewünschten Knoten mit XPath:
sieht es aus wie ein param-nicht umwandeln-zu-Knoten-set. aber eine variable kann!
also so wie ich es gelöst.
Zunächst deklarieren Sie eine variable und setzen Sie den parameter-Wert in die variable.
Dann wandeln Sie die variable node-set.
Nun können wir iterativ die Knoten-set
hier ist der vollständige code
<xsl:variable><xsl:value-of/></xsl:variable>
und nicht<xsl:variable select="" />
Sind Sie wahrscheinlich mit dem integrierten XSLT 1.0-Prozessor, kommt mit dem JDK, das ist eine version von Xalan. Es gibt keine standard-Weg entweder von XSLT 1.0-oder 2.0-aufrufen eines XML-parsers (was das ist, was Sie tun müssen, um zu konvertieren eine Zeichenfolge in einem Knoten). Sie müssen entweder die Umwandlung außerhalb der transformation (vorbei an einem Knoten als parameter), oder verwenden Sie eine Erweiterung, die nicht den job. Ich glaube mich zu erinnern, dass Xalan-Implementierung von exslt:node-set() kann dies tun, überprüfen Sie es heraus. Alternativ, da Sie in der Java-Welt eine ganze Menge Dinge wäre viel einfacher, wenn Sie ein Update zu XSLT 2.0 (Bedeutung sächsisch). Ich bin mir nicht sicher, wie gut die sächsischen spielt mit JSP, obwohl (es kann sicherlich getan werden, aber ich weiß nicht, ob Sie mit dem x:verwandeln Sie tag-Bibliothek). Saxon hat eine Sächsische:parse-Erweiterung-Funktion, die im Entwurf-3.0-Spezifikationen ist ersetzt durch eine standard-Funktion parse-xml().