0

这对你们所有人来说可能并不复杂,但对我来说非常困难。这是我的第二次尝试。我已经改变了我的数据,以包含更多需要更少转换的信息。

基本上,我正在尝试获取由三个假期计划(VA、SS 和 WR)组成的数据,并预测每个计划将在每个工资期累积的时间量,按工人,一整年。我只在我的数据中包含了三个支付期以保持简短(呃)。我需要为每个工人/生效日期组合单独记录。因此,如果一个工人有三个假期计划,并且每两周支付一次(26 次/年),那么该工人可能有 78 条记录。

这是我开始使用的 XML(请记住,在我的示例中,我只使用了前 3 个支付期日期,而不是全部 26 个):

 <?xml version='1.0' encoding='UTF-8'?>
<bb:Report_Data xmlns:bb="urn:com.workday.report/Projected_Balances_Outbound">
   <bb:Report_Entry>
      <bb:projectedBalanceTotal.principalId>1238974569</bb:projectedBalanceTotal.principalId>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>3.323</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </bb:Report_Entry>
   <bb:Report_Entry>
      <bb:projectedBalanceTotal.principalId>4545645878</bb:projectedBalanceTotal.principalId>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>3.692</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:All_Eligible_Time_Off_Plans_for_Worker>
         <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
         <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
         <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
         <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
         <bb:projectedBalanceTotal.effectiveDate2>07252012</bb:projectedBalanceTotal.effectiveDate2>
         <bb:projectedBalanceTotal.effectiveDate3>08082012</bb:projectedBalanceTotal.effectiveDate3>

      </bb:All_Eligible_Time_Off_Plans_for_Worker>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </bb:Report_Entry>
</bb:Report_Data>

这是转换后我需要输出的样子:

<?xml version='1.0' encoding='UTF-8'?>
<bb:Report_Data xmlns:bb="urn:com.workday.report/Projected_Balances_Outbound">
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569</bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.323</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.323</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.323</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>1238974569/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>123454</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>


   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.692</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.692</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>SS</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>SS</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>3.692</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>WR</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>WR</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07112012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>07252012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
   <projectedBalanceTotal>
      <bb:projectedBalanceTotal.principalId>4545645878/bb:projectedBalanceTotal.principalId>
      <bb:projectedBalanceTotal.planCodeId>VA</bb:projectedBalanceTotal.planCodeId>
      <bb:projectedBalanceTotal.leaveCodeId>VA</bb:projectedBalanceTotal.leaveCodeId>
      <bb:projected_balance_accrual_amount_for_the_pay_period>0</bb:projected_balance_accrual_amount_for_the_pay_period>
      <bb:projectedBalanceTotal.effectiveDate1>08082012</bb:projectedBalanceTotal.effectiveDate1>
      <bb:projectedBalanceTotal.employeeid>445241</bb:projectedBalanceTotal.employeeid>
   </projectedBalanceTotal>
</bb:Report_Data>

还有一些需要注意的事情...除了格式更改之外,我将完全删除元素标签“All_Eligible_Time_Off_Plans_for_Worker”,并将“bb:Report_Entry”替换为“projectedBalanceTotal”。

除了我编写了成功删除“All_Eligible_Time_Off_Plans_for_Worker”并将“bb:Report_Entry”替换为“projectedBalanceTotal”的 XSL 代码外,我几乎没有起点。可以在这里找到:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:wd="urn:com.workday.report/CR-INT486-Kuali_Trojan_Time-Absence_Balances__Hospital_Bi-Weekly_-Outbound" 
    exclude-result-prefixes="wd">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="comment()|processing-instruction()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="node()|@*"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="wd:All_Eligible_Time_Off_Plans_for_Worker">
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="wd:Report_Data">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="wd:Report_Entry">
        <projectedleaveBalanceTotal>
            <xsl:apply-templates select="node()|@*"/>
        </projectedleaveBalanceTotal>
    </xsl:template>

</xsl:stylesheet>

任何帮助都会很棒!提前非常感谢。

4

1 回答 1

2

试试这个 ...

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:bb="urn:com.workday.report/Projected_Balances_Outbound">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
 <bb:Report_Data>
   <xsl:apply-templates select="*/*/*/*[starts-with(local-name(),'projectedBalanceTotal.effectiveDate')]"/>
 </bb:Report_Data>
</xsl:template>

<xsl:template match="*">
<!-- Add predicate [starts-with(local-name(),'projectedBalanceTotal.effectiveDate')]
     to the match pattern if you feel like it. -->
   <projectedBalanceTotal>
     <xsl:copy-of select="
       ../../bb:projectedBalanceTotal.principalId  |
       ../bb:projectedBalanceTotal.planCodeId      |
       ../bb:projectedBalanceTotal.leaveCodeId     |
       ../bb:projected_balance_accrual_amount_for_the_pay_period |
       .                                           |
       ../../bb:projectedBalanceTotal.employeeid"   />
   </projectedBalanceTotal>
</xsl:template>

</xsl:stylesheet>

警告

这将输出 <bb:projectedBalanceTotal.effectiveDate\d> 节点,其中“\d”表示某个整数。在您的示例输入中,您有有效日期1、有效日期2 等。但是在您的预期输出中只有有效日期1。我没有费心将所有 EffectiveDate\d 节点重命名为 EffectiveDate1,因为这很可能只是您的笔误。因此,如果您要求将所有有效日期\d 节点精确地称为有效日期 1,则相应地进行调整。

学习笔记

如果您想在将来自行解决类似问题,请尝试以下技术:

  1. 删除所有命名空间,除非命名空间是要解决的问题的固有部分。
  2. 将所有长节点名称替换为短而易记的名称,例如(香蕉、苹果、梨)。
  3. 简化和消除节点,直至问题的真正关键。如果您有两种节点类型banana 和apple 处理相同的规则,只需在示例数据中使用banana。
  4. 生成与转换规则的复杂性成正比的用例数量,并尝试使用例覆盖边缘条件,并广泛使用。
  5. 像对待任何其他编程语言一样对待 XSLT。如果你必须用 Java 编写程序,但你一开始对这种语言的知识为零,你会买一本书或参加培训课程,对吗?就像任何其他语言一样,您不能仅通过查看 SO 上的示例来学习它。

更新

OP 已要求对样式表进行修改,以便有效日期元素是输出,其本地名称中没有嵌入数字。所以这里是变化...

  1. 将大 xsl:copy-of 分成 3 个部分。一个点前(.),一个点(.),一个点后(即employeeid)。所以之前的位看起来像这样......

     <xsl:copy-of select="
       ../../bb:projectedBalanceTotal.principalId  |
       ../bb:projectedBalanceTotal.planCodeId      |
       ../bb:projectedBalanceTotal.leaveCodeId     |
       ../bb:projected_balance_accrual_amount_for_the_pay_period" />
    
  2. 对于中间位(在esse xsl:copy-of select="."),我们不能使用copy-of,因为我们想更改名称。所以我们像这样替换一个文字元素......

     <bb:projectedBalanceTotal.effectiveDate>
      <xsl:value-of select="." />
     </bb:projectedBalanceTotal.effectiveDate>
    
  3. 第三位和最后一位与第一位类似,但仅适用于employeeid 元素。

总而言之,我们得到了我们的模板......

<xsl:template match="*">
   <projectedBalanceTotal>
     <xsl:copy-of select="
       ../../bb:projectedBalanceTotal.principalId  |
       ../bb:projectedBalanceTotal.planCodeId      |
       ../bb:projectedBalanceTotal.leaveCodeId     |
       ../bb:projected_balance_accrual_amount_for_the_pay_period" />
     <bb:projectedBalanceTotal.effectiveDate>
      <xsl:value-of select="." />
     </bb:projectedBalanceTotal.effectiveDate>
     <xsl:copy-of select="../../bb:projectedBalanceTotal.employeeid" />
   </projectedBalanceTotal>
</xsl:template>
于 2012-07-25T04:19:02.887 回答