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-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>
于 2013-05-22T13:29:37.123 回答