1

この XML を変換するとき、この XML ノードの改行の数をカウントする必要があります

    <SpecialInstraction>One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
Eleven
twelve
thirteen
fourteen
fifteen</SpecialInstraction>

上記の例のように、14 個の改行があります。

&#xD;&#xA;「 」と「 」の出現回数を調べてみたの&#13;ですが、上記の XML に変化がなくても、この XML をシリアライズ/デシリアライズするたびに出現回数が変動します。

XSLT の XML ノードの値から行数を取得する方法を知っている人はいますか?

4

2 に答える 2

0

文字列内のスペースの数をカウントするために、StackOverflow - (xsl を使用して xml ノード内の単語数をカウントする)に同様の質問がありました。そこから少し盗んだコードを、改行を使用するように適合させました。

<xsl:template name="word-count">
        <xsl:param name="data"/>
        <xsl:param name="num"/>
        <xsl:variable name="newdata" select="$data"/>
        <xsl:variable name="remaining" select="substring-after($newdata,'&#10;')"/>                

        <xsl:choose>
                <xsl:when test="$remaining">
                        <xsl:call-template name="word-count">
                                <xsl:with-param name="data" select="$remaining"/>
                                <xsl:with-param name="num" select="$num+1"/>
                        </xsl:call-template>
                </xsl:when>
                <xsl:when test="$num = 1">
                        no words...
                </xsl:when>
                <xsl:otherwise>
                        <xsl:value-of select="$num"/>
                </xsl:otherwise>
        </xsl:choose>                
</xsl:template>
于 2012-06-28T10:07:39.240 に答える