Unable to cast von XRTreeFrag in XNodeSet

Habe ich die folgenden test-code... ich versuche mich zu übergeben, node-set als param. Nach vielen Stunden, ich war schließlich in der Lage, übergeben Sie es an meiner Vorlage.

Wie gebe ich meine node-set zu der Vorlage:

<xsl:call-template name="listing">
    <xsl:with-param name="customData">
        <xsl:apply-templates select="exslt:node-set($data)"/>
    </xsl:with-param>
</xsl:call-template>

Wie meine Vorlage erhält es:

<xsl:template name="listing">
    <xsl:param name="customData" select="/.."/>
    <xsl:variable name="data">
        <xsl:choose>
            <xsl:when test="not($customData)">
                <xsl:value-of select="/data"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$customData"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    <textarea><xsl:copy-of select="$data"></xsl:copy-of></textarea>
</xsl:call-template>

Wenn ich die Parameter einstellen, die mit einem one-liner, dann würde es mich nicht beschweren... Beispiel:

<xsl:variable name="data" select="$customData"/>

Aber sobald ich versuche, es so einstellen, es bricht:

<xsl:variable name="data">
   <xsl:value-of select="$customData"/>
</xsl:variable>

Immer diese Fehlermeldung:
org.apache.xpath.Objekte.XRTreeFrag kann nicht umgewandelt werden, org.apache.xpath.Objekte.XNodeSet

Ich war nur in der Lage gewesen zu finden einem anderen thread datiert im Jahr 2000, sprechen über das ähnliche Problem... ich muss re-nodeset zurück mit so etwas wie node-set($customData)/* aber ich versuchte das, und es war ein no go.

EDIT:
OK, ich kann bestätigen, dass ich erfolgreich die Knoten-set in meinem template. Aber ich bin immer noch nicht in der Lage, Sie zu kopieren auf meine variable... Er sagte immer wieder, dass es noch eine RTF.

<xsl:template name="listing">
<xsl:param name="customData" as="node-set"/>
<!--<xsl:variable name="data" select="/data"/>-->

<xsl:variable name="data">
    <xsl:choose>
        <xsl:when test="count($customData) != 0">
            <xsl:copy-of select="$customData"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="/data"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>

    <textarea><xsl:value-of select="$customData/record[1]"/></textarea>
    <textarea><xsl:value-of select="/data/record[1]"/></textarea>
    <textarea><xsl:value-of select="$data/record[1]"/></textarea>
</xsl:template>

Den oben genannten test, der zeigt, dass ich zugreifen kann $customData und die original - /Daten ohne irgendein problem, Sie zeigen beide die Platte... aber $Daten wird Durcheinander gebracht. Das bedeutet also, dass die Kopie von $customData zu $data nicht funktioniert...

Ich habe versucht, die folgenden Möglichkeiten, keine davon funktioniert:

<xsl:copy-of select="$customData"/>
<xsl:value-of select="$customData"/>
<xsl:apply-templates select="exslt:node-set($customData)"/>
<xsl:apply-templates select="exslt:node-set($customData)/data"/>

Irgendeine Idee...?

  • string($customData) oder alternativ <xsl:copy-of select="$customData"/> sollte funktionieren ohne problem.
  • funktioniert nicht... aktualisiert mein original post mit den Sachen, die ich versucht, was das problem sein könnte...? Noch werfen org.apache.xpath.Objekte.XRTreeFrag kann nicht umgewandelt werden, org.apache.xpath.Objekte.XNodeSet Aber ich dachte, es ist bereits ein Knoten-set... warum ist es immer noch zu sehen, als RTF in der Vorlage?
InformationsquelleAutor codenamezero | 2012-07-18
Schreibe einen Kommentar