1

対応する XML ファイルに特定の文字列が含まれている場合にボタンを表示する XSL ファイルに取り組んでいます。ボタンが常に表示される (XML ファイルに必要な値が含まれていない場合でも) またはまったく表示されない (XML ファイルに値が含まれている場合でも) 問題があるようです。XML の部分私が懸念しているファイルは次のとおりです。

<sp_stList>
<sp_st>
<st_num>1234</st_num>
<feanme>FAKE</feanme>
<featyp>ST</featyp>
<dirsuf></dirsuf>
<dirpre></dirpre>
<lv_apt></lv_apt>
<mun>VAN</mun>
<msgs>
<msg filename="File.pdf">d:\folder1\fild.pdf</msg>
</msgs>
<spst_poly>0</spst_poly>
<mes_switch>X</mes_switch>
<cdts>20120103161202PS</cdts>
</sp_st>
</sp_stList>

Xが含まれている場合<mes_switch>、ボタンが表示されるはずです。空白または別の文字が含まれている場合、ボタンは表示されません。

私が試したコードは次のとおりです。

<a name="Info"></a>
    <xsl:if "contains(sp_stList/sp_st/mes_switch, 'X'))">
        <a href="#SpSt" style="color:orange" t:id="Spec_Sit_hdr">
            <img border="0" src="./file.jpg"></img>
        </a>
    </xsl:if>

何らかの理由で、これはうまくいきません。あなたが提供できる助けをいただければ幸いです!

ありがとう!

4

2 に答える 2

3
<xsl:if "contains(sp_stList/sp_st/mes_switch, 'X'))">

これは構文的に不正な XML です (したがって、構文的に不正な XSLT コードも同様です:

  1. 評価されるブール式は、属性で指定する必要がありますtest。そのような属性は存在しません。

  2. 対応する左括弧がない右括弧があります。

解決策: これら 2 つの問題を修正するだけで、コードが機能するようになります。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:template match="/">
        <a name="Info"></a>
        <xsl:if test="contains(sp_stList/sp_st/mes_switch, 'X')">
            <a href="#SpSt" style="color:orange" id="Spec_Sit_hdr">
                <img border="0" src="./file.jpg"></img>
            </a>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

この変換が提供された XML ドキュメントに適用されると、次のようになります。

<sp_stList>
    <sp_st>
        <st_num>1234</st_num>
        <feanme>FAKE</feanme>
        <featyp>ST</featyp>
        <dirsuf></dirsuf>
        <dirpre></dirpre>
        <lv_apt></lv_apt>
        <mun>VAN</mun>
        <msgs>
            <msg filename="File.pdf">d:\folder1\fild.pdf</msg>
        </msgs>
        <spst_poly>0</spst_poly>
        <mes_switch>X</mes_switch>
        <cdts>20120103161202PS</cdts>
    </sp_st>
</sp_stList>

必要な正しい結果が生成されます。

<a name="Info"/>
<a href="#SpSt" style="color:orange" id="Spec_Sit_hdr">
   <img border="0" src="./file.jpg"/>
</a>
于 2012-05-30T02:30:41.390 に答える