2017-01-16 21 views
0

我有一個連接模板變量的XSLT樣式表。我無法弄清楚如何阻止它做到這一點,但也保持單一變量。
我已經粘貼了代碼和下面的轉換...您可以看到Startdt變量值02/01/2017被連接重複三次。XSLT模板連接字符串/如何停止

代碼

<xsl:variable name="VPlan" select="wd:DEP_VISION_planname/wd:ID[@wd:type = 'Health_Care_Coverage_Plan_ID']"/> 
     <xsl:variable name="MPlan" select="wd:DEPMEDPLAN/wd:ID[@wd:type = 'Health_Care_Coverage_Plan_ID']"/> 
     <xsl:variable name="DPlan" select="wd:DEPDENT_PLAN/wd:ID[@wd:type = 'Health_Care_Coverage_Plan_ID']"/> 

     <xsl:if test="$VPlan = 'HEALTH_CARE_COVERAGE_PLAN-Vision - United Health Care'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'UHC Vision'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 

     <xsl:if test="$DPlan = 'HEALTH_CARE_COVERAGE_PLAN-Dental - MetLife Enhanced'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'Metlife Dental ASO Enhanced'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 

     <xsl:if test="$DPlan = 'HEALTH_CARE_COVERAGE_PLAN-Dental - MetLife Basic'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'Metlife Dental ASO Basic'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 

     <xsl:if test="$MPlan = 'HEALTH_CARE_COVERAGE_PLAN-Medical - Medical Mutual of Ohio PPO SuperMed Plus'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'Medical Mutual Medical MMO PPO'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 

     <xsl:if test="$MPlan = 'HEALTH_CARE_COVERAGE_PLAN-Medical - AETNA PPO Network/Non Network'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'Aetna Medical PPO'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 

     <xsl:if test="$MPlan = 'HEALTH_CARE_COVERAGE_PLAN-Medical - HealthSpan HMO Network Only'"> 
      <xsl:call-template name="Depplan"> 
       <xsl:with-param name="Deplan" select="'HealthSpan Medical HMO'"/> 
       <xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/> 
      </xsl:call-template> 
     </xsl:if> 
    </xsl:template> 

     <xsl:template name="Depplan"> 
      <xsl:param name="Deplan"/> 
      <xsl:param name="Startdt"/> 

      <xsl:text>[QBDEPENDENTPLAN]</xsl:text> 
      <xsl:call-template name="insertDelimiter"/> 
      <xsl:value-of select="$Deplan"/> 
      <xsl:call-template name="insertDelimiter"/> 
      <!-- <xsl:call-template name="FormatDateValue"> 
       <xsl:with-param name="dateString"> 
        <xsl:value-of select="$Startdt"/> 
       </xsl:with-param> 
      </xsl:call-template> --> 
      <xsl:value-of select="$Startdt"/> 
      <xsl:call-template name="insertDelimiter"/> 
      <xsl:call-template name="insertDelimiter"/> 
      <xsl:text>T</xsl:text> 
      <xsl:call-template name="insertNewLine"/> 
     </xsl:template> 

輸出

[QBDEPENDENTPLAN],UHC視覺,O 2/01/2017 2017年2月1日2017年2月1日, ,T
[QBDEPENDENTPLAN],Metlife牙科ASO增強版,2017年2月1日02/01/2017 02/01/2017,,T
[QBDEPENDENTPLAN],安泰醫療PPO,O 2/01/2017 2017年2月1日2月1日/ 2017,,T

回答

0

的日期印製3次是<xsl:value-of select="$Startdt"/>命令的結果。

它的價值來自

<xsl:with-param name="Startdt" select="../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date"/>

我假設的XPath使用此處(../wd:COBRA_Records_within_Range/wd:COBRA_Eligible_Date):

  • 已經找到3條記錄(從wd:COBRA_Records_within_Range
  • 打印日期(wd:COBRA_Eligible_Date )從每個記錄。

一個可能的解決方案是隻從找到的第一個記錄打印日期:

../wd:COBRA_Records_within_Range[1]/wd:COBRA_Eligible_Date 

如果你能保證所有這些日期(從所有記錄)都是一樣的,沒有進一步的考慮是需要。

但是,如果這些日期不同? 你必須自己考慮這個。

+0

感謝這工作。我很確定每個在範圍內的日期應該是相同的。 – MLTS