0

良い一日、

次のような XSLT テンプレートを組み立てています。

<xsl:for-each select="CarParts/Items">
<div class="columns"><xsl:value-of select="Quantity"/></div>
<div class="columns"><xsl:value-of select="Amount"/></div>
<div class="columns">[SUBTOTAL]</div><br />
</xsl:for-each>

次のように XSLT 変数を定義できることを知っています。

<xsl:variable name="totalAmount" select="sum(CarParts/Items/Amount)" />

しかし、XSLT 変数を [SUBTOTAL] にする必要があります。これは、for-each 選択ループ内の Quantity * Amount に等しくなります。これは可能ですか?これが SQL の場合、これは計算列に相当します。

助言がありますか?

ティア、

コソン

4

1 に答える 1

0

やりたいことは、値を数値にキャストすることです。その後、必要に応じて乗算できます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <results>
            <xsl:for-each select="CarParts/Items">
                <Item id="{position()}">
                    <q><xsl:value-of select="Quantity"/></q>
                    <a><xsl:value-of select="Amount"/></a>
                    <st><xsl:value-of select="number(Quantity)*number(Amount)"/></st>
                </Item>
            </xsl:for-each>
        </results>
    </xsl:template>
</xsl:stylesheet>

入力/CSS が提供されていなかったので、フォーマットを少し変更しましたが、何をしようとしていたかがわかるはずです。私のサンプル入力でそれを実行する

<CarParts>
  <Items>
    <Quantity>1</Quantity>
    <Amount>100.00</Amount>
  </Items>
  <Items>
    <Quantity>2</Quantity>
    <Amount>25.00</Amount>
  </Items>
  <Items>
    <Quantity>3</Quantity>
    <Amount>6</Amount>
  </Items>
</CarParts>

私はの結果を得る

<?xml version="1.0" encoding="utf-8"?>
<results>
    <Item id="1">
        <q>1</q>
        <a>100.00</a>
        <st>100</st>
    </Item>
    <Item id="2">
        <q>2</q>
        <a>25.00</a>
        <st>50</st>
    </Item>
    <Item id="3">
        <q>3</q>
        <a>6</a>
        <st>18</st>
    </Item>
</results>
于 2012-08-21T19:05:39.823 に答える