2013-05-22 61 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>