Xml SQL返回的逗号分隔数据的XSLT转换

Xml SQL返回的逗号分隔数据的XSLT转换,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我使用XSLT1.0从SQL返回如下信息: <xsl:if test="../Field[@Name='TheDBFieldName'][.!='']"> <xsl:element namespace="http://BlahBlah" name="TheResult"> <xsl:value-of select="../Field[@Name='TheDbFieldName']" /> </xsl:element>

我使用XSLT1.0从SQL返回如下信息:

<xsl:if test="../Field[@Name='TheDBFieldName'][.!='']">
    <xsl:element namespace="http://BlahBlah" name="TheResult">
        <xsl:value-of select="../Field[@Name='TheDbFieldName']" />
    </xsl:element>
</xsl:if>
<TheDBFieldName>
    <TheResult>
        <Result>1</Result>
    </TheResult>
    <TheResult>
        <Result>2</Result>
    </TheResult>
    <TheResult>
        <Result>3</Result>
    </TheResult>
    <TheResult>
        <Result>6</Result>
    </TheResult>
</TheDBFieldName>

我当前的结果如下:

<xsl:if test="../Field[@Name='TheDBFieldName'][.!='']">
    <xsl:element namespace="http://BlahBlah" name="TheResult">
        <xsl:value-of select="../Field[@Name='TheDbFieldName']" />
    </xsl:element>
</xsl:if>
<TheDBFieldName>
    <TheResult>
        <Result>1</Result>
    </TheResult>
    <TheResult>
        <Result>2</Result>
    </TheResult>
    <TheResult>
        <Result>3</Result>
    </TheResult>
    <TheResult>
        <Result>6</Result>
    </TheResult>
</TheDBFieldName>
1,2,3,6

我需要像这样返回它:

<xsl:if test="../Field[@Name='TheDBFieldName'][.!='']">
    <xsl:element namespace="http://BlahBlah" name="TheResult">
        <xsl:value-of select="../Field[@Name='TheDbFieldName']" />
    </xsl:element>
</xsl:if>
<TheDBFieldName>
    <TheResult>
        <Result>1</Result>
    </TheResult>
    <TheResult>
        <Result>2</Result>
    </TheResult>
    <TheResult>
        <Result>3</Result>
    </TheResult>
    <TheResult>
        <Result>6</Result>
    </TheResult>
</TheDBFieldName>

1.
2.
3.
6.
不幸的是,XSLT2.0不是我的选择


在这方面的任何帮助,包括使用我的信息示例,将不胜感激!我无法将当前示例应用于我的示例,主要是因为我使用SQL数据,而不是吸收XML文件

在递归模板调用中,可以使用
substring-before()
substring-after()

例如

XML输入

<Field Name="TheDBFieldName">1,2,3,6</Field>
<TheDBFieldName>
   <TheResult>
      <Result>1</Result>
   </TheResult>
   <TheResult>
      <Result>2</Result>
   </TheResult>
   <TheResult>
      <Result>3</Result>
   </TheResult>
   <TheResult>
      <Result>6</Result>
   </TheResult>
</TheDBFieldName>
致:



您可以使用
子字符串-before()
子字符串-after()
函数在逗号处分割原始结果。创建一个命名模板来递归地发出
元素,一次只处理一个输入项。Daniel感谢您的回复。这看起来很有希望。我在我的代码中尝试了这个例子,并实现了它,没有错误。但是,当我运行它时,会出现空白错误。错误:无法从已加载的输入文档中删除空白。而是将输入文档作为XmlReader提供。有什么想法吗?同时,我将继续尝试调整这个优秀的示例。我正在使用.net XslCompiledTransform-感谢您提供的信息…我将立即尝试您的建议,并报告结果。-非常感谢。您关于删除xsl:strip空间的建议纠正了这个错误,现在它工作得很好。谢谢你的帮助!!