2

私は XML/XSL の初心者です (2 日間の新規のように)。True/False 属性を返す xsl:value-of select を実行している行があります。代わりにはい/いいえを表示したいのですが、これを試みて失敗しました。以下は私が現在持っている行です。はいまたはいいえを表示するには、何を追加する必要があるか教えてください。

<fo:block>Automatic Sprinklers Required: &#xA0;
      <xsl:value-of select="Attributes/AttributeInstance/Attribute[@id='1344297']/../Value"/>
</fo:block>
4

2 に答える 2

4

xsl:choose ブロックを使用して値をテストします。choose の構文は次のとおりです。

<xsl:choose>
   <xsl:when test="some Boolean condition">
    <!-- "if" stuff -->
  </xsl:when>
  <xsl:otherwise>
    <!-- "else" stuff -->
  </xsl:otherwise>
</xsl:choose>

このテストを実行するテンプレートを呼び出し、ブール値に従って Yes/No を出力するようにコードを再フォーマットしました。

<fo:block>Automatic Sprinklers Required: &#xA0;
    <xsl:call-template name="formatBoolean">
       <xsl:with-param name="theBoolValue" select="Attributes/AttributeInstance/Attribute[@id='1344297']/../Value"/>
    </xsl:call-template>
</fo:block>


<xsl:template name="formatBoolean">
   <xsl:param name="theBoolValue"/>

   <xsl:choose>
       <xsl:when test="$theBoolValue = true()">
          Yes
       </xsl:when>
       <xsl:otherwise>
          No
       </xsl:otherwise>
   </xsl:choose>
</xsl:template>

このコードは機能するはずですが、構文エラーがあるかどうかをテストしていません。

幸運を!

コビー

于 2012-09-20T13:22:58.107 に答える
0

それはかなり簡単なはずです。以下は私の XML です:

<form>
    <value>False</value>
</form>

そして私のXSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
    xmlns:date="http://exslt.org/dates-and-times" xmlns:str="http://exslt.org/strings">
    <xsl:template match="/">
        <xsl:choose>
            <xsl:when test="/form/value = 'True'">
                <xsl:text>Yes</xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <xsl:text>No</xsl:text>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>
于 2012-09-20T13:30:57.860 に答える