1

私はインターネットを精査して、xml 要素の行数を見つけるこの方法を発見しました。

<xsl:if test="string-length(@Example) - string-length(translate(@Example, '&#xa;', '')) &lt; 10"> 

上記の例では、 @Example が行数をカウントする要素です。ただし、このコードは自動的に次のようになるため、気に入りませんでした。

    <xsl:if test="string-length(@Example) - string-length(translate(@Example, ' 
', '')) &lt; 10">

ご覧のとおり、コード&#xa;は文字通りの空白行に変わります (これはこれを表していますが、空白行にはしたくありません)。上記は私には悪いコーディングスタイルのように思えます(そうでない場合は教えてください)ので、@Example で行数を見つけるための別の方法が必要です。ありがとうございました。

4

2 に答える 2

0

このスタイルはおそらくあなたの好みに近いです:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <xsl:template match="t">
  <xsl:value-of select=
    "string-length(@Example)
    -
     string-length(translate(@Example, $vNL, ''))"/>
 </xsl:template>
</xsl:stylesheet>

NL定数は変数に保持され、この変数を参照しても、エディターは新しい行を表示しません。

$vNL宣言でさえ、この問題を解決することができます-これがグローバル<xsl:param>になり、値が変換の外部呼び出し元によって提供される場合。

于 2010-07-30T20:00:57.167 に答える
0

以前の回答を明確にするためだけに ( https://stackoverflow.com/questions/3366181/sharepoint-designer-keeps-turning-xa-within-source-code-into-literal-new-line )

このスタイルシートを実行します (Dimitre と同じ):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <xsl:template match="xsl:value-of">
  <xsl:value-of select=
    "string-length(@select)
    -
     string-length(translate(@select, $vNL, ''))"/>
 </xsl:template>
</xsl:stylesheet>

それ自体を入力として、出力します。

0

次のような入力でのみ機能します。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <xsl:template match="xsl:value-of">
  <xsl:value-of select=
    "string-length(@select)&#xA;
    -&#xA;
     string-length(translate(@select, $vNL, ''))"/>
 </xsl:template>
</xsl:stylesheet>

出力:

2
于 2010-07-31T21:31:12.583 に答える