0

XSLT 2.0 変換を適用するために Saxon ライブラリを使用しています。

指定された 2 つの日付の間のすべての日付を出力するコードを追加しようとしています。

そのために、期間変数を操作する方法を見つけようとしています。具体的には、最初の日付を取得し、それに 1 日を追加して印刷し、最初の日付が 2 番目の日付まで増加するまで繰り返します。

XSLT に次のように記述しました。

  <xsl:template name="get_rundatesNode">
    <xsl:param name="startDate" />
    <xsl:param name="endDate" />
    <xsl:variable name="oneDay" select='xs:dayTimeDuration("P1D")' />

  </xsl:template>

Saxon から次のエラーが表示されます。

/xsl:stylesheet/xsl:template[2]/xsl:variable[1] でのエラー XPST0081 {xs:dayTimeDuration("P1D"} の行 -1 の char 0 での XPath 構文エラー: 宣言されていない名前空間プレフィックス {xs} 警告: /xsl:stylesheet/xsl:template[2]/xsl:variable[1] SXWN9001: 兄弟命令が続く変数は効果がありません

おそらく間違った構文を使用していると思います。ドキュメントに完全に混乱しています。これが正しく行われている例が見つかりません。それを機能させる方法を教えてください。

4

1 に答える 1

2

必要なのは、xsプレフィックスを W3C スキーマの名前空間にバインドするスタイルシートの上部にある宣言だけです。おそらく、結果ツリーへの名前空間のコピーを削除するディレクティブも一緒に指定します。

            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            exclude-result-prefixes="xs"

この警告は、テンプレートへのコードの追加がまだ完了していないため、変数は何も実行しないことを示しているだけです。

于 2013-09-25T18:56:54.207 に答える