-3

変換用の XSLT スタイル シートがあります。これで、 を使用してユーザー定義関数を指定する必要があります<xsl:function>。この中でこれを行おうとする<xsl:stylesheet></xsl:stylesheet>と、エラーがスローされます。

関数は次のとおりです。

<xsl:function name="functx:pad-string-to-length" as="xs:string" 
              xmlns:functx="http://www.functx.com" >
  <xsl:param name="stringToPad" as="xs:string?"/> 
  <xsl:param name="padChar" as="xs:string"/> 
  <xsl:param name="length" as="xs:integer"/> 

  <xsl:sequence select=" 
   substring(
     string-join (
       ($stringToPad, for $i in (1 to $length) return $padChar)
       ,'')
    ,1,$length)
 "/>

</xsl:function>
4

2 に答える 2

1

質問で定義された関数は構文的に正しく、意味があるようです。

したがって、エラーは、表示するのを忘れたコードにあります。具体的には、この関数がどの引数でどのように使用されているかです。

これとは別に、不要なものを。に置き換えるなど、明らかなリファクタリングの可能性がありstring-join()ますconcat()

于 2011-12-08T13:51:53.223 に答える
0

@John Mitchellが言ったように、エラーが何であるかを教えてくれると役立つかもしれません。ただし、関数で名前空間が宣言されていることがわかります。スタイルシートの上部にある要素でxmlns:functx="http://www.functx.com"も宣言されていることを確認してください。<xsl:stylesheet>

もう 1 つ確認すべきことは、明らかに、関数呼び出しで引数を正しく入力していることです。最初の 2 つのパラメーターには引用符が必要ですが、3 番目のパラメーターには必要ありません (例: <xsl:value-of select="functx:pad-string-to-length('boo', '-', 12)"/>)。

于 2011-12-08T09:04:44.493 に答える