2013-05-22 84 views
1

我第一次寫入XSLT。我正在使用VS 2012創建一個SSIS包,使用XSLT將XML數據導入到SQL表中,以壓扁一些XML數據。在執行任務時,輸出XML包含不是形成的XML的額外數據。我很接近,但我不確定如何做對。XSLT輸出包含額外字段

我試圖添加文件,但我似乎無法讓他們進入這個空間。 。 。我無法添加屏幕截圖。我希望發佈問題後,我可以附上這些文件。 。 。

編輯:粘貼的評論:

輸入XML文件結束等被添加到輸出格式化

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

的XSLT是

</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> 

搜索名稱

<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> 
+0

輸入XML文件結束這樣 巴倫斯LAMBERT LISA BALLANCELAMBERT LISA BALLANCELAMBERT LISA LAMBERT JACK LAMBERT JOHN LAMBERT John和LISA user2311555

+0

搜索名稱被添加到輸出作爲無格式 巴倫斯LAMBERT LISABALLANCELAMBERT LISABALLANCELAMBERT LISALAMBERT JACKLAMBERT JOHNLAMBERT John和LISALAMBERT JOHN RLAMBERT JOHN R和LISA – user2311555

+0

XSLT是' \t \t <的xsl:for-每個選擇= 「RVSCompleteReport」> \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t的 \t ' – user2311555

回答

0

這是幾乎可以肯定,因爲你沒有爲SEARCH_NAMES提供了模板和default/built in templates are processed

Dimitre有一個很好的調試模板,你可以添加到找到在同一職位這些無與倫比的元素。

在你的情況,你可以捕捉到虛假的元素:

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

但更重要的是,你可以捕捉到根目錄,然後系統地應用模板(和更換for-eachapply-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>