2013-05-22 1 views
1

Мой первый forray в XSLT. Я использую VS 2012 для создания пакета SSIS для импорта данных XML в таблицу SQL, используя XSLT, чтобы сгладить некоторые данные XML. После выполнения задачи выходной XML содержит дополнительные данные, которые не сформированы XML. Я близок, но я не уверен, как все исправить.Выход XSLT включает дополнительные поля

Я попытался добавить файлы, но я не могу представить их в этом пространстве. , , и я не могу добавить скриншоты. Я надеюсь, что после публикации вопроса, я могу прикрепить файлы. , ,

Редактировать: Pasted Комментария:

Входной 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 заканчивается, как это Ballance ЛАМБЕР ЛИЗА BALLANCELAMBERT ЛИЗА BALLANCELAMBERT ЛИЗА ЛАМБЕР РАЗЪЕМ ЛАМБЕР ДЖОН ЛАМБЕР Джон и ЛИЗА user2311555

+0

имена поиска добавляются к выходу как неформатированный балланс Ламберта LISABALLANCELAMBERT LISABALLANCELAMBERT LISALAMBERT JACKLAMBERT JOHNLAMBERT JOHN И LISALAMBERT JOHN RLAMBERT JOHN R И LISA – user2311555

+0

XSLT - это \t \t \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-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>