0

私の出力は次のようになります

<TransactionLog TID="1400" SeqNo="3337446" SQLTransaction="Insert into TankerLoads Values(141221,53,299,18,1,426148,6,'Nov 19 2007 12:00AM','Dec 30 1899 12:59PM',3.00,20682,0,'Zevo','Nov 19 2007 12:00AM',0)" />

<root>以下のようにノードを追加する必要があります

<root>
  <TransactionLog TID="1400" SeqNo="3337446" SQLTransaction="Insert into TankerLoads Values(141221,53,299,18,1,426148,6,'Nov 19 2007 12:00AM','Dec 30 1899 12:59PM',3.00,20682,0,'Zevo','Nov 19 2007 12:00AM',0)" />
</root>

以下のコードを使用してすべてのレコードを結合しました。次に、ルートノードを追加する必要があり、これをOUTPUT METHODASTEXTで表示する必要があります。私を助けてください。

<xsl:template match="text()">
  <xsl:value-of select="normalize-space(.)" />
</xsl:template>
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:variable name="vResult1">
   <TransactionLog TID="1400"
     SeqNo="3337446"
     SQLTransaction="Insert into TankerLoads Values(141221,53,299,18,1,426148,6,'Nov 19 2007 12:00AM','Dec 30 1899 12:59PM',3.00,20682,0,'Zevo','Nov 19 2007 12:00AM',0)" />
</xsl:variable>

 <xsl:template match="node()|@*" mode="pass2">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*" mode="pass2"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="/">
  <root>
   <xsl:apply-templates select="$vResult1/*" mode="pass2"/>
  </root>
 </xsl:template>
</xsl:stylesheet>

この変換が任意の XML ドキュメント (使用されていない) に対して実行されると、必要な正しい結果が生成されます。

<root>
   <TransactionLog TID="1400" SeqNo="3337446"
                   SQLTransaction="Insert into TankerLoads Values(141221,53,299,18,1,426148,6,'Nov 19 2007 12:00AM','Dec 30 1899 12:59PM',3.00,20682,0,'Zevo','Nov 19 2007 12:00AM',0)"/>
</root>

または、既存の変換を次のように変更することをお勧めします。

 <xsl:template match="/">
  <root>
   <xsl:apply-templates/>
  </root>
 </xsl:template>

または、変換にすでにテンプレート マッチングがある場合/:

 <xsl:template match="/">
  <root>
   <!-- Put the body of your current template here -->
  </root>
 </xsl:template>
</xsl:stylesheet>
于 2012-07-09T00:01:16.780 に答える