Sächsische Fehler "XPTY0019: Erforderliche Element-Typ des ersten Operanden von '/' node(); geliefert Wert hat, Gegenstand Typ xs:string"
Habe ich ein XSL-Programm, das wiederum erzeugt ein XSL-Programm, die abhängig von der Eingabe könnte wie folgt Aussehen:
<xsl:variable name="patterns"/> <!--empty in this particular case-->
<xsl:template name="token">
<xsl:for-each select="$patterns/pattern">
...
Wenn ich dann die generierte stylesheet, Saxon, segne sein Herz, ist offenbar dabei, eine Art der statischen Analyse und beschwert sich:
XPTY0019: Required item type of first operand of '/' is node(); supplied value has item type xs:string
sein und nicht einmal kompilieren Sie das stylesheet.
Mein workaround zu generieren, wurde ein dummy-element in der $Muster nodeset, aber es ist eine sauberere Ansatz hier, oder Sie zu unterdrücken die compile-Fehler?
InformationsquelleAutor | 2012-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut http://www.w3.org/TR/xslt20/#variable-values, "Wenn die variable-binding-element ist leer Inhalt und hat weder ein select-Attribut noch ein Attribut, dann wird der angegebene Wert der variable ist eine Zeichenfolge der Länge null.".
So dass Sie brauchen, um das zu ändern, zum Beispiel, indem Sie
<xsl:variable name="patterns" select="()"/>
zu binden, wird eine leere Sequenz als Wert der Variablen.as=node()*
Attribut.InformationsquelleAutor Martin Honnen
In XSLT 1.0 (das gleiche würde auch mit XSLT 2.0) verwenden:
Liefert dieses an den XSLT-Prozessor die Informationen, die notwendig zu dem Schluss, dass die Art der
$patterns
variable node-set.<tns:variable name="patterns"> <xsl:apply-templates select="terminal/any"/> </tns:variable>
(wo tns ist ein namespace-Präfix zugeordnet xsl bei der Ausgabe), so dass ich nicht im Voraus wissen, ob die variable leer ist oder nicht, das ist der Grund, warum dieas
Attribut war die perfekte Lösung für mich, zu sehen, wie ich mit XSLT 2.0.InformationsquelleAutor Dimitre Novatchev