XSLT в цикле продолжает получать только первое преобразование файла в выводе.Как остановить кэширование вывода XSLT - PullRequest
0 голосов
/ 29 марта 2019

Когда я зацикливаю список файлов и выполняю преобразование для каждого файла в папке, эффект преобразования будет таким, как если бы он продолжал преобразовывать первый файл снова и снова.Преобразование выглядело как кеширование.Вот код для преобразования: я делаю это внутри вызова WebAPI .. в .NET Framework версии 4.5.2.Страница ASP.NET вызывает WebAPI.

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

       var d = new DirectoryInfo(strXMLFolder);
            foreach (FileInfo file in d.GetFiles())
            {
                 String strXSLTFile = strParamArr[2];
                String xmlFile = file.Name;
                //File.WriteAllBytes(strFile, transferObj.XSLTTemplateFileData);
                XslCompiledTransform proc = new XslCompiledTransform();
                proc.Load(strXSLTFolder + strXSLTFile);
                proc.Transform(strXMLFolder + xmlFile, strXMLFolder + xmlFile + "-IntermediateXML.xml");
..................................

Файл XSLT имеет следующий код:

<data>
  <xsl:for-each select="//QuantitativeResponseAssay/Setup/Elements/*/Name">
    <row>
      <PLA_file_name>
        <xsl:value-of select="$vFileName"/>
      </PLA_file_name>
      <Analyst>
        <xsl:value-of select="$vAnalyst"/>
      </Analyst>
      <xsl:choose>
        <xsl:when test="position() = 1">
          <Sample>Reference</Sample>
        </xsl:when>

        <xsl:when test="position() = 2">
          <Sample>Sample 1</Sample>
        </xsl:when>

        <xsl:when test="position() = 3">
          <Sample>Sample 2</Sample>
        </xsl:when>

        <xsl:when test="position() = 4">
          <Sample>QC</Sample>
        </xsl:when>

        <xsl:otherwise>
          <Sample>Error</Sample>
        </xsl:otherwise>
      </xsl:choose>
      <Sample_Name>
        <xsl:value-of select="."/>
      </Sample_Name>
      <Upper_Asymptote>
        <xsl:value-of select="//StatisticTestResults/StatisticTestResult[TestName='AdditionalTestParameterEstimateUpperAsymptote'][./InvolvedAssayElements[Name=current()]]/Value"/>
      </Upper_Asymptote>
      <Dynamic_Range>
        <xsl:value-of select="//StatisticTestResult[TestName='AdditionalTestParameterEstimateDynamicRange'][./InvolvedAssayElements[Name=current()]]/Value" />
      </Dynamic_Range>
      <Slope_Factor>
        <xsl:value-of select="//StatisticTestResult[TestName='AdditionalTestParameterEstimateSlope'][./InvolvedAssayElements[Name=current()]]/Value"/>
      </Slope_Factor>
      <Regression_pvalue>
        <xsl:if test="current() != 'Reference Standard'">
            <xsl:value-of select="//QuantitativeResponseAssay/AssayResults/AssayResult/StatisticTestResults/StatisticTestResult[TestName='FTestRegression'][./InvolvedAssayElements[Name=current()]]/PValue" />
        </xsl:if>
      </Regression_pvalue>
      <nonparallelism_pvalue>
        <xsl:if test="current() != 'Reference Standard'">
             <xsl:value-of select="//QuantitativeResponseAssay/AssayResults/AssayResult/StatisticTestResults/StatisticTestResult[TestName='FTestNonParallelism'][./InvolvedAssayElements[Name=current()]]/PValue" />
         </xsl:if>  
      </nonparallelism_pvalue>
      <LOF_pvalue>
        <xsl:if test="current() != 'Reference Standard'">
            <xsl:value-of select="//QuantitativeResponseAssay/AssayResults/AssayResult/StatisticTestResults/StatisticTestResult[TestName='FTestNonLinearity'][./InvolvedAssayElements[Name=current()]]/PValue" />
        </xsl:if>
      </LOF_pvalue>
      <Potency>
        <xsl:if test="string-length(//QuantitativeResponseAssay/AssayResults/AssayResult/PotencyResults/PotencyResult[TestControlSampleName=current()]/RelativePotencyValue) > 1">
            <xsl:value-of select="//QuantitativeResponseAssay/AssayResults/AssayResult/PotencyResults/PotencyResult[TestControlSampleName=current()]/RelativePotencyValue * 100 "  />
        </xsl:if>
      </Potency>
      <!-- Column L Width_CI v -->
      <Width_CI>
        <xsl:if test="string-length(//QuantitativeResponseAssay/AssayResults/AssayResult/PotencyResults/PotencyResult[TestControlSampleName=current()]/PercentualRelativePotencyRange) > 1">
            <xsl:value-of select="//QuantitativeResponseAssay/AssayResults/AssayResult/PotencyResults/PotencyResult[TestControlSampleName=current()]/PercentualRelativePotencyRange * 100 " />
        </xsl:if>
      </Width_CI>
      <!-- Column M A_unrestricted v -->
      <A_unrestricted>
        <xsl:value-of select="//FullModel/FitResult/ParameterEstimate[ParameterName='A'][AssayElementName=current()]/Value" />
      </A_unrestricted>
      <!-- Column N B_unrestricted v -->
      <B_unrestricted>
        <xsl:value-of select="//FullModel/FitResult/ParameterEstimate[ParameterName='B'][AssayElementName=current()]/Value" />
      </B_unrestricted>
      <!-- Column O C_log2_unrestricted v -->
      <C_unrestricted>
        <xsl:value-of select="//FullModel/FitResult/ParameterEstimate[ParameterName='C'][AssayElementName=current()]/Value"/>
      </C_unrestricted>
      <!-- Column P D_unrestricted v -->
      <D_unrestricted>
        <xsl:value-of select="//FullModel/FitResult/ParameterEstimate[ParameterName='D'][AssayElementName=current()]/Value" />
      </D_unrestricted>
      <!-- Column Q G_unrestricted v -->
      <G_unrestricted>
        <xsl:value-of select="//FullModel/FitResult/ParameterEstimate[ParameterName='G'][AssayElementName=current()]/Value" />
      </G_unrestricted>
      <Template_ID>
        <xsl:value-of select="$vTemplate"/>
      </Template_ID>
      <Template_Revision>
        <xsl:value-of select="$vTemplateRevision"/>
      </Template_Revision>

    </row>
  </xsl:for-each>
</data>

Я ожидаю различного вывода в каждом промежуточном файле .XML, но я получаю результат первого файла ввывод в промежуточный файл.

...