你好。是否可以通过我的 xslt 将单个(制表符分隔)文件中的数据解析到不同的帐户

Hello. Is it possible to parse data from a single (Tab-separated) file out to different accounts via my xslt

我对以下解决方案有点困惑。目前我的 xslt 和服务引擎将采用制表符分隔的文件,将其分解为列,然后通过 Web 服务地址将数据解析到各种 public 安全机构。制表符分隔的文件从服务器发送到我的 watch/folder,其中解析器及其 xslt 查找预解析的机构代码并将其映射到最终机构代码并将其发送到正确的机构。但是,如果同一个文件中有 3 个代理,只有第一个代理被发送,因为解析器在其他代理有机会之前进行消费和转换。这是我当前代码的示例。 我从列 F130、F131、F132 和 F133 进行映射。如果它们都在文件中,则只有 F130 被解析,而另一个被忽略。想知道这是否有可能解析到不同的帐户。 :( 谢谢 J。

这是我试图从示例文件解析的列^SGB1234^SMD1234^SMN1234^SPS1234^

所以当

`"substring(/NewDataSet/Row[F1='H']/F130,1,3) = 'SGB'`

(我抓取前3个字母做为代号)

然后为我的 API wsdl 创建一个 soap 事件

`<ReportIncident xmlns="http://ee.com">
  <DispatchHeader>
   <AgencyIdentifierCode>
    <xsl:choose>
     <xsl:when test="substring(/NewDataSet/Row[F1='H']/F130,1,3)='SGB'">SG</xsl:when>
   </xsl:choose>
  <AgencyIdentifierCode>`

报告事件的 xml 输出 API

<AgencyIdentifierCode>SG</AgencyIdentifierCode>

因此,对于所有这些,我想根据不同的

创建一个 ReportIncident 推送到我的 API 到不同的帐户

<AgencyIdentifierCode>SG</AgencyIdentifierCode> <AgencyIdentifierCode>SMD</AgencyIdentifierCode> <AgencyIdentifierCode>SNM</AgencyIdentifierCode> <AgencyIdentifierCode>SPS</AgencyIdentifierCode>

使用下面我正在尝试的代码。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex">
  <xsl:strip-space elements="AgencyIdentifierCode"/>
<xsl:template match="/">
    <soap:Envelope xsl:version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <xsl:choose>
                <xsl:when test="substring(/NewDataSet/Row[F1='H']/F130,1,3) = 'SGB' and substring
                (/NewDataSet/Row[F1='H']/F131,1,3) = 'SMD' and substring
                (/NewDataSet/Row[F1='H']/F132,1,3) = 'SNM' and substring
                (/NewDataSet/Row[F1='H']/F133,1,3) = 'SPS'">
                    <ReportIncident xmlns="http://eee.com">
                        <DispatchHeader>
                            <AgencyIdentifierCode>
                                <xsl:choose>
                                    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F130,1,3)= 'SGB'">SG</xsl:when>
                                    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F131,1,3)= 'SMD'">WA12345</xsl:when>
                                    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F132,1,3)= 'SNM'">BAFD</xsl:when>
                                    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F133,1,3)= 'SPS'">1111</xsl:when>
                                </xsl:choose>
                            </AgencyIdentifierCode>.....................

我从你的问题中唯一能理解的是:你的第一个条件:

<xsl:when test="substring(/NewDataSet/Row[F1='H']/F130,1,3) = 'SGB' 
            and substring(/NewDataSet/Row[F1='H']/F131,1,3) = 'SMD' 
            and substring(/NewDataSet/Row[F1='H']/F132,1,3) = 'SNM' 
            and substring(/NewDataSet/Row[F1='H']/F133,1,3) = 'SPS'">
只有当 4 个命题中的 所有 都为真时,

才为真。因此,如果以及何时进行第二次测试:

<xsl:choose>
    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F130,1,3)= 'SGB'">SG</xsl:when>
    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F131,1,3)= 'SMD'">WA12345</xsl:when>
    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F132,1,3)= 'SNM'">BAFD</xsl:when>
    <xsl:when test="substring(/NewDataSet/Row[F1='H']/F133,1,3)= 'SPS'">1111</xsl:when>
</xsl:choose>

结果将总是 "SG" 因为——正如我们刚刚建立的那样——第一个命题是正确的。