1

私はSharePointからの値を持っています<xsl:value-of select="@fldNm" />

これには、空の文字列または「はい」の 2 つの可能な値のうちの 1 つがあります。これは<xsl:template name="dvt_1.rowedit">、SharePoint 表示フォーム内にあります。

値が空文字列の場合は1文字表示したいのですが、「はい」の場合は別の文字を表示したいです。

タグを HTML にインラインで配置し、document.write(). しかし、アクションを fldNm の値に応答させることができません。

私は多くの例を見つけましたが、それらは私がやろうとしていることとはあまりにも異なっているので、それらを理解することはできません.

これは状況です:

SharePoint カスタム リストを作成すると、newForm、editForm、dispForm の 3 つの .aspx ページが作成されます。

これらの .aspx ページには、あらゆる種類の xsl および xslt 機能が読み込まれます。いくつかの xsl テンプレートが作成され、そのうちの 1 つは、.aspx が使用されたときに表示される HTML を保持します。そのテンプレートは、SharePoint によって「dvt_1」という名前が付けられます。次に、そのテンプレートが<xsl:for-each select="$Rows">xsl 構造で呼び出されます。

dispForm ページで呼び出されたテンプレート内で、各データは以下を使用して表示されます。

    <td>
       <div>
            <xsl:value-of select="@fieldName" />
       </div>
    </td>

ページがレンダリングされると、その 'value-of' タグは、(もちろん) psecified されたフィールドの内容に置き換えられます。

私の場合、設計要件ドキュメントのため、質問しているフィールドには「はい」または「」が含まれます。

はいの場合は、「はい」を示す単一の文字をそこに置きたいと思います。それ以外の場合は、「そうではない」ことを示す別の文字をそこに置きたいと思います。

レンダリングされた値を選択構造に取り込む方法がわかりません。

私は次のようなものを試しました

    <td>
    The answer is: <script> if (<xsl:value-of select="@fieldName" /> == 'yes') {
    document.write('A');
    } else {
    document.write('B');
    }
    </script>
    </td>

しかし、xsl タグはそのように認識されませんでした。

私は xsl に非常に慣れていないため、構文がどのように機能するかを理解し始めていますが、まだ非常に不思議です。

4

2 に答える 2

1

あなたは私たちに多くの情報を提供していないので、これが私ができる最善の答えです.

この回答に示されているように:

$val が "x" の場合は文字列 $s1 を生成し、 $val が "y" の場合は文字列 $s2 を生成する、より一般的な XPath 1.0 式:

concat(substring($s1, 1 div ($val = "x")),
       substring($s2, 1 div ($val = "y"))
      )

あなたの質問を正しく理解できれば、この原則を使用して期待される回答を生成できます。これを確認するには、次のサンプルを見てください。

仮定:

  • の値は"yes"文字を出力する必要があります"a"
  • の値は""文字を出力する必要があります"b"

この XSLT (前述の XPath を使用する) の場合:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="yes" method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="e">
    <xsl:text>The value is: </xsl:text>
    <xsl:value-of
      select="concat(substring('a', 1 div (@fldNm = 'yes')), 
                     substring('b', 1 div (@fldNm = ''))
              )"/>
    <xsl:text/>
  </xsl:template>

</xsl:stylesheet>

...次のサンプル XML に適用されます。

<t>
  <e fldNm="yes"/>
  <e fldNm=""/>
</t>

...必要な結果が生成されます。

The value is: a
The value is: b
于 2013-05-08T00:16:53.753 に答える