Ich habe gerade festgestellt, dass, wenn main.xsl xsl: Importe lib.xsl die einige XSLT2 Funktionen definiert, können diese Funktionen nicht in Haupt verwendet werden .xsl
Das stimmt natürlich nicht.
Werfen Sie einen Blick auf die FXSL Bibliothek, deren Vorlagen Funktionen enthalten, die mit dem XSLT-Code importiert werden müssen. Die Stylesheet-Module von FXSL importieren tatsächlich andere Stylesheet-Module und verwenden deren Funktionen.
Hier ist ein einfaches Beispiel:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f"
>
<xsl:import href="../f/func-foldl.xsl"/>
<xsl:import href="../f/func-Operators.xsl"/>
<!--
This transformation calculates 10!
Expected result: 3628800 or 3.6288E6
-->
<xsl:output encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:value-of select="f:foldl(f:mult(), 1, 1 to 10)"/>
</xsl:template>
</xsl:stylesheet>
Wenn diese Transformation auf jedem XML-Dokument (nicht benutzt) angewandt wird, berechnet sie die 10! (10 faktorielle) Wert:
3628800
Alle drei XSLT 2.0-Prozessoren mit denen ich arbeite: Saxon 9, AltovaXML und XQSharp das gleiche Ergebnis. Hier
ist eine Teilansicht in der Import Hierarchie der obigen Transformation:
Wie wir sehen können, nur weniger als die Hälfte aller Importe gezeigt werden ... :)
Natürlich sehen wir hier nur die importierten Vorlagen, aber in jedem importierten Stylesheet-Modul gibt es für jede Vorlage mindestens zwei <xsl:function>
s.
@Alejandro: XQSharp haben eine neue Beta. Ich habe es vor ein paar Tagen heruntergeladen. –
@Alejandro: Wie haben Sie die Fußnote produziert? –
@Dimitre: Es sieht so aus, als hätte er '...' verwendet, um eine falsche Fußnotenschrift zu erstellen. –