XSLT输出空调试失败,没有输出

XSLT输出空调试失败,没有输出,xslt,xslt-2.0,xslt-grouping,Xslt,Xslt 2.0,Xslt Grouping,我通过论坛阅读,我无法理解为什么输出是空的。这可能是我错过的一件简单的事情 我尝试在VS 2017中进行调试,但它没有提供任何输出。对此,我表示感谢。如果我只输入ns0:EFACT\u D96A\u ORDERS\u EAN008节点作为XSLT的输入,那么输出将带有“test”内容 试验 输入文件- <ins0:EdifactInterchangeXml DelimiterSetSerializedData="39:-1:-1:43:58:63:-1:46:-1" xmlns

我通过论坛阅读,我无法理解为什么输出是空的。这可能是我错过的一件简单的事情

我尝试在VS 2017中进行调试,但它没有提供任何输出。对此,我表示感谢。如果我只输入ns0:EFACT\u D96A\u ORDERS\u EAN008节点作为XSLT的输入,那么输出将带有“test”内容


试验
输入文件-

    <ins0:EdifactInterchangeXml DelimiterSetSerializedData="39:-1:-1:43:58:63:-1:46:-1" xmlns:ins0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006/InterchangeXML">
      <ns0:UNA xmlns:ns0="http://schemas.microsoft.com/Edi/EdifactServiceSchema">
        <UNA1>58</UNA1>

      </ns0:UNA>
      <ns0:UNB xmlns:ns0="http://schemas.microsoft.com/Edi/EdifactServiceSchema">
        <UNB1>
          <UNB1.1>ABCD</UNB1.1>
          <UNB1.2>5</UNB1.2>
        </UNB1>

      </ns0:UNB>
      <TransactionSetGroup>
        <TransactionSet DocType="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006#EFACT_D96A_ORDERS_EAN008">
          <ns0:EFACT_D96A_ORDERS_EAN008 xmlns:ns0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006">


          </ns0:EFACT_D96A_ORDERS_EAN008>
        </TransactionSet>
      </TransactionSetGroup>
      <ns0:UNZ xmlns:ns0="http://schemas.microsoft.com/Edi/EdifactServiceSchema">
        <UNZ1>1</UNZ1>
        <UNZ2>86</UNZ2>
      </ns0:UNZ>
    </ins0:EdifactInterchangeXml>

58
ABCD
5.
1.
86

表达式开头的正斜杠与文档节点匹配,因此执行
选择=“/s0:EFACT\u D96A\u ORDERS\u EAN008”
仅会选择
s0:EFACT\u D96A\u ORDERS\u EAN008
,如果它是文档节点的子节点。i、 如果它是根元素,那么它不是

要选择
s0:EFACT\u D96A\u ORDERS\u EAN008
,无论它在文档中的何处,请执行此操作

<xsl:apply-templates select="//s0:EFACT_D96A_ORDERS_EAN008" />

您还需要从匹配表达式中删除单正斜杠(匹配表达式中不需要双斜杠,因为无论元素在文档中的位置如何,匹配都会起作用)

试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var s0 userCSharp" version="1.0" xmlns:ns1="http://Microsoft.LobServices.Sap/2007/03/Types/Idoc/3/ORDERS05//740" xmlns:ns0="http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//740/Send" xmlns:ns2="http://Microsoft.LobServices.Sap/2007/03/Types/Idoc/Common/" xmlns:s0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:userCSharp="http://schemas.microsoft.com/BizTalk/2003/userCSharp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ins0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006/InterchangeXML">
  <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />

  <xsl:template match="/">
    <xsl:apply-templates select="//s0:EFACT_D96A_ORDERS_EAN008" />
  </xsl:template>

  <xsl:template match="s0:EFACT_D96A_ORDERS_EAN008">
    <ns0:Send>
      <ns0:idocData>
        Test
      </ns0:idocData>
    </ns0:Send>
  </xsl:template>
</xsl:stylesheet>

试验

您好,谢谢您的帮助。我试过了,但是在“文本”的地方我有一个巨大的转换,而且输入文件比论坛中给出的文件大,ns0:EFACT_D96A_ORDERS_EAN008有多个子节点。作为XML转换输出,我只得到1500多行转换后的行,但当我只将节点ns0:EFACT_D96A_ORDERS_EAN008及其子节点输入到转换中时,我得到5000多行,这是正确的输出。您能帮助我理解还有什么可能出错吗?我可以看到XSLT中有一个引用as。我认为这就是问题所在。我试图理解../s0做什么
表示父节点,因此
。/s0.PRILoop1
获取当前元素的所有同级。理想情况下,您应该做的是创建一个演示问题的。创建一个问题的练习通常可以帮助您自己识别问题。从一个基本的XSLT开始,并在其中添加一些位,直到遇到问题为止,
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var s0 userCSharp" version="1.0" xmlns:ns1="http://Microsoft.LobServices.Sap/2007/03/Types/Idoc/3/ORDERS05//740" xmlns:ns0="http://Microsoft.LobServices.Sap/2007/03/Idoc/3/ORDERS05//740/Send" xmlns:ns2="http://Microsoft.LobServices.Sap/2007/03/Types/Idoc/Common/" xmlns:s0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006" xmlns:ns3="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:userCSharp="http://schemas.microsoft.com/BizTalk/2003/userCSharp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ins0="http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006/InterchangeXML">
  <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />

  <xsl:template match="/">
    <xsl:apply-templates select="//s0:EFACT_D96A_ORDERS_EAN008" />
  </xsl:template>

  <xsl:template match="s0:EFACT_D96A_ORDERS_EAN008">
    <ns0:Send>
      <ns0:idocData>
        Test
      </ns0:idocData>
    </ns0:Send>
  </xsl:template>
</xsl:stylesheet>