1

XSLT への私の最初の進出。VS 2012 を使用して SSIS パッケージを作成し、XSLT を使用して XML データを SQL テーブルにインポートし、XML データの一部を平坦化しています。タスクを実行すると、出力 XML には、XML 形式ではない余分なデータが含まれます。私は近いですが、それを正しくする方法がわかりません。

ファイルを追加しようとしましたが、このスペースに入れることができないようです。. . スクリーンショットを追加できません。質問を投稿した後、ファイルを添付できることを願っています。. .

編集:貼り付けコメント:

入力 XML ファイルは次のように終了します

</PropertyReports>
</RVSCompleteReport>
</REPORT>
<SEARCH_NAMES ErrorInfo="">
  <SEARCH_NAME>BALLANCE LAMBERT LISA</SEARCH_NAME>
  <SEARCH_NAME>BALLANCELAMBERT LISA</SEARCH_NAME>
  <SEARCH_NAME>BALLANCE-LAMBERT LISA</SEARCH_NAME>
  <SEARCH_NAME>LAMBERT JACK</SEARCH_NAME>
  <SEARCH_NAME>LAMBERT JOHN</SEARCH_NAME>
  <SEARCH_NAME>LAMBERT JOHN AND LISA</SEARCH_NAME>
</SEARCH_NAMES>
</RvsStandardDelivery>

検索名がフォーマットされていないものとして出力に追加されています

</RVSCompleteReport> 
</REPORT> 
BALLANCE LAMBERT LISABALLANCELAMBERT LISABALLANCE-LAMBERT 
LISALAMBERT JACKLAMBERT JOHNLAMBERT JOHN AND LISALAMBERT 
JOHN RLAMBERT JOHN R AND LISA

XSLT は

<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/> 
  <xsl:template match="RvsStandardDelivery/REPORT">
    <REPORT>
      <xsl:for-each select="RVSCompleteReport">
        <RVSCompleteReport>
          <OrdrNum>
            <xsl:value-of select="ReportInfo/ordernumber"/>
          </OrdrNum>
          <borrowerName>
            <xsl:value-of select="ReportInfo/borrowername"/>
          </borrowerName>
          <PropAdd>
            <xsl:value-of select="ReportInfo/propertyaddress"/>
          </PropAdd>
        </RVSCompleteReport>
      </xsl:for-each>
    </REPORT>
  </xsl:template>
</xsl:stylesheet>
4

1 に答える 1

0

これは、テンプレートを提供しておらずSEARCH_NAMESデフォルト/組み込みのテンプレートが処理されているためです。

Dimitre には、同じ投稿内でこれらの一致しない要素を見つけるために追加できる便利なデバッグ テンプレートがあります。

あなたの場合、偽の要素をキャプチャできます:

<xsl:template match='SEARCH_NAMES'></xsl:template>

しかしさらに良いことに、ルートをキャプチャしてから、テンプレートを体系的に適用できます (および を に置き換えますfor-each) apply-template

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <xsl:apply-templates select="RvsStandardDelivery/REPORT"></xsl:apply-templates>
  </xsl:template>

  <xsl:template match="REPORT">
    <REPORT>
      <xsl:apply-templates select="RVSCompleteReport"></xsl:apply-templates>
    </REPORT>
  </xsl:template>

  <xsl:template match="RVSCompleteReport">
    <RVSCompleteReport>
      <OrdrNum>
        <xsl:value-of select="ReportInfo/ordernumber"/>
      </OrdrNum>
      <borrowerName>
        <xsl:value-of select="ReportInfo/borrowername"/>
      </borrowerName>
      <PropAdd>
        <xsl:value-of select="ReportInfo/propertyaddress"/>
      </PropAdd>
    </RVSCompleteReport>
  </xsl:template>

</xsl:stylesheet>
于 2013-05-22T13:29:37.123 に答える