我第一次参与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>
答案 0 :(得分:0)
这几乎可以肯定是因为您没有为SEARCH_NAMES
和default / built in templates are processed提供模板
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>