0

このxsltに取り組むのに苦労しているので、レシートの合計が株価*であるということになると、頭痛の種になります。結果が得られるように、xsltシートにコードを入力する方法のガイドが必要です。 2つのオフィスと各顧客の2つの製品の合計値を含むテーブルになります。xmlおよびxsltの新機能です。

<offices>
  <office>
    <customerproduct>
      <Price>10</Price>
       <Stock>20</Stock>
       <Ordered>25</Ordered>
    </customerproduct>
    <customerproduct>
      <Price>10</Price>
       <Stock>2</Stock>
       <Ordered>15</Ordered>
    </customerproduct>
   <receiptno.>1</receiptno.>
  </office>
  <office>
    <customerproduct>
      <Price>14</Price>
       <Stock>20</Stock>
       <Ordered>24</Ordered>
    </customerproduct>
    <customerproduct>
      <Price>100</Price>
       <Stock>2</Stock>
       <Ordered>100</Ordered>
    </customerproduct>
  <receiptno.>2</receiptno.>
 </office>
</offices>
4

1 に答える 1

0

この変換

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

 <xsl:template match="/*">
  <html>
    <table border="1">
     <xsl:apply-templates/>
    </table>
  </html>
 </xsl:template>

 <xsl:template match="office">
  <tr>
    <td><xsl:value-of select="concat('Office',position())"/></td>
    <td><xsl:value-of select="sum(*/(Price*Stock))"/></td>
  </tr>
 </xsl:template>
</xsl:stylesheet>

次のXMLドキュメント(いくつかの不正の修正後に提供されたテキスト)に適用された場合:

<offices>
    <office>
        <customerproduct>
            <Price>10</Price>
            <Stock>20</Stock>
            <Ordered>25</Ordered>
        </customerproduct>
        <customerproduct>
            <Price>10</Price>
            <Stock>2</Stock>
            <Ordered>15</Ordered>
        </customerproduct>
        <receiptno.>1</receiptno.>
    </office>
    <office>
        <customerproduct>
            <Price>14</Price>
            <Stock>20</Stock>
            <Ordered>24</Ordered>
        </customerproduct>
        <customerproduct>
            <Price>100</Price>
            <Stock>2</Stock>
            <Ordered>100</Ordered>
        </customerproduct>
        <receiptno.>2</receiptno.>
    </office>
</offices>

(私たちが推測できるのは)望ましい結果を生成します:

<html>
   <table border="1">
      <tr>
         <td>Office1</td>
         <td>220</td>
      </tr>
      <tr>
         <td>Office2</td>
         <td>480</td>
      </tr>
   </table>
</html>
于 2012-09-08T18:16:18.360 に答える