92391


下記のように、if関数の条件の中で所定の要素に別の関数(normalize-space)を適用し、その結果を比較に使用したいと思っています。  
が、下記の記載を含むxslを適用したxmlをブラウザ上で表示することができません。(画面上真っ白になります)  
下記の記述を削除すると正常に表示されます。  
このような記述の仕方は不可能なのでしょうか？  
また、もし代替案があればご教授いただきたいです。  
よろしくお願いいたします。

なお、C#で読み込みを行いたいため、XSLのバージョンは1.0です。

[code]

    <xsl:if test="element1/element2[element3/normalize-space(element4)='AAA']/element5 !=''">
    ～
    </xsl:if>
    
[/code]

追記  
下記の通り、該当の要素に適用するtemplateを作ってみたのですが、  
下記[]内には適用されないようで、ダメでした・・・  
element1/element2[element3/element4='AAA']/element5

[code]

      <xsl:template match="element1/element2/element3/element4">
        <xsl:call-template name="normalizespace">
          <xsl:with-param name="string" select="." />
        </xsl:call-template>
      </xsl:template>
    
      <xsl:template name="normalizespace">
        <xsl:param name="string" />
        <xsl:value-of select="normalize-space($string)"/>
      </xsl:template>
    
[/code]


CC BY-SA 4.0
2022-11-23T03:24:15.340
92387
2022-11-23T05:45:18.130
2022-11-23T05:45:18.130
4236
55553
question
c# xpath xsl xslt
xsl if test内での関数呼び出し


>
[code]

>     <xsl:if test="element1/element2[element3/normalize-
> space(element4)='AAA']/element5 !=''">
>     ～
>     </xsl:if>
>  
[/code]

とのことですが、XPathとして正しくないです。 `normalize-space()`
は関数であり、関数呼び出しは`[`の直後とまでは言いませんが少なくとも`/`の直後には置けません。

[code]

    <xsl:if test="element1/element2[normalize-space(element3/element4)='AAA']/element5 !=''">
    ～
    </xsl:if>
    
[/code]

と書く必要があります。


CC BY-SA 4.0
2022-11-23T05:44:56.550
92391
2022-11-23T05:44:56.550
4236
92387
answer