5

$validItemsxml内の文字列をチェックする次のものがあります...ただし、 1行目の変数内に「Null」またはテキストがないかどうかをチェックする別のテストを作成する必要があります...

<xsl:if test="$validItems[(Caption | CalltoAction)[string(.)]]">
 <div class="text">
   <xsl:choose>
     <xsl:when test="$horizontal">
       <div class="holder">
         <div class="frame">
           <div class="slides-descriptions">
             <xsl:apply-templates select="$validItems" mode="horizontal"/>
           </div>
           <div class="switcher"/>
         </div>
       </div>
     </xsl:when>
     <xsl:otherwise>
       <div class="slides-descriptions">
         <xsl:apply-templates select="$validItems" mode="vertical"/>
       </div>
       <div class="switcher"/>
     </xsl:otherwise>
   </xsl:choose>
 </div>
</xsl:if>

変数xsl:if test = $ validItemsをテストするにはどうすればよいですか?

4

3 に答える 3

7

あなたが何を求めているのか理解できれば、

<xsl:if test="$validItems[(Caption | CalltoAction)[not(string(.))]]">

それをします。つまり、「$ validItemsノードセットに、文字列値が空のCaptionまたはCalltoAction子要素を持つ要素がある場合」です。あなたも言うことができます

<xsl:if test="$validItems[(Caption | CalltoAction)[. = '']]">
于 2013-03-25T20:11:18.393 に答える
6

XPathデータモデルには「Null」のようなものはありません。

「変数$validItems内にテキストがない」については、この変数のタイプを知っておくと役立ちます。これが単一要素ノードであり(表示したコードサンプルから表示される場合があります)、テストするのがテキストノードの子がないことである場合、テストはになりますnot($ValidItems/text())。テキストノードの子孫がないことをテストする場合は、を試してみてnot(string($validItems))ください$validItems=''

于 2013-03-25T20:37:52.803 に答える
0

これらの答えはどれも私にはうまくいきませんでした。ODKxformsを介してxpathを使用しているので、それがうまくいったかどうかはわかりません。私はこのソリューションを使用してそれを機能させました:

string-length(string(/path/to/node)) = 0

私はこれを日付と数でテストしました。

于 2018-06-09T03:31:48.197 に答える