私はこのXSLTを持っています:
<xsl:template match="/">
<xsl:variable name="errorCount" select="count($orders/*[1]/cm:Error)" />
<xsl:apply-templates select="@*|node()">
<xsl:with-param name="errorCount" select="$errorCount" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="status">
<xsl:param name="errorCount" tunnel="yes" />
<xsl:copy>
<xsl:choose>
<xsl:when test="$errorCount > 0">
<xsl:text>ERROR</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>OK</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
トンネリングとすべてが機能しているように見えますが、変換は次のエラーで失敗します。
「>」の第 1 オペランドの必須項目タイプは数値です。指定された値の項目タイプは xs:string です
私は最初にそれが使用されているテンプレートに変数宣言を持っていましたが、それはうまくいきました。他のテンプレートでも同じカウントを使用する必要があるため、移動しました。
この変数/パラメーターが実際に数値であることをどのように/どこで宣言しますか?