4
1つのスタイルシート内のXSLT 2.0とXSLT 3.0プロセッサの両方でunparsed-text-lines()関数を有効にするにはどうすればよいですか?まだXSLTでは利用できない関数のコードをどのようにフォールバックするのですか?
私はfunction-available()関数を使うことができると思っていましたが、これはXSLT 2.0プロセッサの構文エラーを返します。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:local="local"
version="2.0" exclude-result-prefixes="xs fn local">
<xsl:function name="local:unparsed-text-lines" as="xs:string+">
<xsl:param name="href" as="xs:string" />
<xsl:choose>
<xsl:when test="function-available('fn:unparsed-text-lines')">
<!-- XSLT 3.0 -->
<xsl:sequence select="fn:unparsed-text-lines($href)" />
</xsl:when>
<xsl:otherwise>
<!-- XSLT 2.0 -->
<xsl:sequence select="fn:tokenize(fn:unparsed-text($href), '\r\n|\r|\n')[not(position()=last() and .='')]" />
</xsl:otherwise>
</xsl:choose>
</xsl:function>
etc.
ありがとうございました。私はもともと、xsl:use-xsl:レベルで、それはまだコンパイルに失敗したときにxsl:を試しました。ありがとう。 –
@ SeanB.Durkin:どうぞよろしくお願いいたします。 –
@DimitreNovatchevこれはちょうど私の一日を保存しました、ありがとう:) – quaylar