もう一度ヘルプを受けることを希望します。ここでXSLT:XMLをMuenchian Groupingを使用してテキストファイルに変換する方法
<Report>
<RecordValues>
<Record>
<FieldValue fieldName="firm_name" fieldValue="Firm_1"/>
<FieldValue fieldName="firm_number" fieldValue="11"/>
<FieldValue fieldName="prepared_by" fieldValue="PARKER"/>
<FieldValue fieldName="contact_number" fieldValue="123456789"/>
<FieldValue fieldName="trade_date" fieldValue="2010-10-17"/>
<FieldValue fieldName="symbol" fieldValue="ADM"/>
</Record>
<Record>
<FieldValue fieldName="firm_name" fieldValue="Firm_1"/>
<FieldValue fieldName="firm_number" fieldValue="11"/>
<FieldValue fieldName="prepared_by" fieldValue="PARKER"/>
<FieldValue fieldName="contact_number" fieldValue="123456789"/>
<FieldValue fieldName="trade_date" fieldValue="2010-10-16"/>
<FieldValue fieldName="symbol" fieldValue="ACW"/>
</Record>
<Record>
<FieldValue fieldName="firm_name" fieldValue="Firm_2"/>
<FieldValue fieldName="firm_number" fieldValue="12"/>
<FieldValue fieldName="prepared_by" fieldValue="EDWARDS"/>
<FieldValue fieldName="contact_number" fieldValue="123456780"/>
<FieldValue fieldName="trade_date" fieldValue="2010-10-19"/>
<FieldValue fieldName="symbol" fieldValue="ADS"/>
</Record>
</RecordValues>
</Report>
私が取得する必要が出力されています:
A Firm_1 11
B PARKER 123456789
C 2010-10-17 ADM
C 2010-10-16 ACW
T 4
A Firm_2 12
B EDWARDS 123456780
C 2010-10-19 ADS
T 3
あなたは、私が「firm_name」または「firm_number」でレコードをグループ化する必要が見ることができるようにここに私のサンプル入力XMLです。各グループには、タイプAのレコードが1つ、タイプBのレコードが1つ、タイプCのレコードが複数必要です。レコード「T」はレコード「T」のない各グループの合計です。入力XMLはすでにソートされています。私はMuenchianメソッドレコードをグループ化していますが、何も成功しませんでした。明らかに私は何か間違っている。ここに書いたXSLTは次のとおりです。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:key name="value-by-firm" match="Report/RecordValues/Record/FieldValue" use="firm_number"/>
<xsl:template match="Record">
<xsl:for-each select="FieldValue/@fieldValue[count(. | key('value-by-firm', firm_number))]">
<xsl:text>A </xsl:text>
<xsl:value-of select="firm_name"/>
<xsl:text> </xsl:text>
<xsl:value-of select="firm_number"/>
<xsl:text>
</xsl:text>
<xsl:text>B </xsl:text>
<xsl:value-of select="prepared_by"/>
<xsl:text> </xsl:text>
<xsl:value-of select="contact_number"/>
<xsl:text>
</xsl:text>
<xsl:for-each select="key('value-by-firm', firm_number)">
<xsl:text>C </xsl:text>
<xsl:value-of select="trade_date"/>
<xsl:text> </xsl:text>
<xsl:value-of select="symbol"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
多分、別の方法があります。前もって感謝します。
これは*何らかの意味をなすものではありません! 「タイプAのレコード」、「タイプBのレコード」、「タイプCのレコード」、「タイプTのレコード」とは何ですか?どのような値が合計されますか? –
@Dimitre Novatchev:これは単なるハードコードされたレコード識別子です。 – klipa
合計は、1つの会社の合計レコード数を表示する必要があります。 – klipa