首页 > 解决方案 > 导出 XSLT - XSLT 元素可能不包含 XSLT 元素

问题描述

我正在使用一组 XML 和 XSLT 编码从数据库中提取特定数据。XSLT 可能没有正确形成,但我不确定如何更新 XSLT 代码。当我尝试在与数据库接口的应用程序中保存代码时,我在主题行中收到错误消息“导出 XSLT - XSLT 元素可能不包含 XSLT 元素”。

我想要完成的是几件事:a)格式化第 4 列中的日期应格式化为“yyyymmdd”并与第 3 列中的值连接;b) 第 7 列中的数据应至少为 6 位,并且有多个值的前导零已从输出中删除;还有一个choose语句,如果值2可用,则使用值2,如果不可用,则使用值1;c) 将第一列中的支付日期(数据)添加到第 17 列中的数据作为前缀,其间有空格,格式相同。

任何见解将不胜感激。在下面进行编码,我已经对标题行中的列进行了编号。

谢恩

{

<?xml version="1.0" encoding="UTF-8"?>
<GLPayrollExportConfiguration>
  <definitions>
    <FileType Value="CSV"/>
    <FileName>
      <Value Value="CRJ_GL_Summary_"/>
      <Value Value="paygroup_xref"/>
      <Value Value="_"/>
      <Value Value="payrun_payperiod_and_suffix"/>
      <Value Value="_"/>
      <Value Value="transaction_timestamp"/>
      <Value Value=".csv"/>
    </FileName>
    <Settings>
      <SplitMode Value="HOME_LOCATION_SPLIT"/>
      <ChartOfAccountXRefCode Value="GL"/>
      <RunOnPayRunCommit Value="True"/>
   </Settings>
    <Header>
1)    <Text Value="Posting Date,"/>
2)    <Text Value="Document Type,"/>
3)    <Text Value=" ,"/>
4)    <Text Value="Account Type,"/>
5)    <Text Value="Account No,"/>
6)    <Text Value="Fund No,"/>
7)    <Text Value="Dimension Speedkey Code,"/>
8)    <Text Value="Dimension 1,"/>
9)    <Text Value="Dimension 2,"/>
10)   <Text Value="Dimension 3,"/>
11)   <Text Value="Dimension 4,"/>
12)   <Text Value="Dimension 5,"/>
13)   <Text Value="Dimension 6,"/>
14)   <Text Value="Dimension 7,"/>
15)   <Text Value="Dimension 8,"/>
16)   <Text Value="External Document No,"/>
17)   <Text Value="Description,"/>
18)   <Text Value="Amount,"/>
    </Header>
    
    <Columns>
      <Column Name="PostingDate" DataType="datetime" Source="data" Value="payrun_pay_date" Sort="true"/>
      <Column Name="DocumentType" Value=" "/>
      <Column Name=" " DataType="string" Value="PAYROLL"/> 
      <Column Name="AccountType" DataType="datetime" Source="mapping"/>
      <Column Name="AccountNo" DataType="string" Source="data" Value="payrun_category_override_journal_number"/>
      <Column Name="FundNo" DataType="string" Value="UNREST"/>
      <Column Name="DimensionSpeedkeyCode" DataType="string" Source="mapping"/>
      <Column Name="Dimension1" DataType="string" Value=" "/>
      <Column Name="Dimension2" DataType="string" Value=" "/>
      <Column Name="Dimension3" DataType="string" Value=" "/>
      <Column Name="Dimension4" DataType="string" Value=" "/>
      <Column Name="Dimension5" DataType="string" Value=" "/>
      <Column Name="Dimension6" DataType="string" Value=" "/>
      <Column Name="Dimension7" DataType="string" Value=" "/>
      <Column Name="Dimension8" DataType="string" Value=" "/>
      <Column Name="ExternalDocumentNo" DataType="string" Value=" "/>
      <Column Name="Description" DataType="string" Source="mapping"/>
      <Column Name="Amount" DataType="number" Source="data" Value="payrun_amount" Function="sum" />
    
    </Columns>
  </definitions>

  <MappingDefinitions>
    <definition>

    <criteriaset> 
<!-- EXCLUDE MEMO DEDUCTIONS AND TAXABLE BENEFITS / JOURNAL NUMBER CODED AS exclude, Exclude, or EXCLUDE  -->   
        <criteria item="payrun_category_override_journal_number" op="ne">EXCLUDE</criteria>
        <criteria item="payrun_category_override_journal_number" op="ne">Exclude</criteria>
        <criteria item="payrun_category_override_journal_number" op="ne">exclude</criteria>
<!-- EXCLUDE RECORDS WITH with 0 VALUE -->
        <criteria item="payrun_amount" op="ne" opDataType="number">0</criteria>
    </criteriaset>

    <mapping>
        <mapto columnname="AccountType">
          <Value Value="payrun_pay_date"/>
        </mapto>
        <mapto columnname="DimensionSpeedkeyCode">
          <Value Value="override_segment_charged_dynamic_org_level_onsitedepartment"/>
          <Value Value="override_segment_dynamic_labor_metric_code_CostNumber"/>
        </mapto>        
        <mapto columnname="Description">
          <Value Value="payrun_category_override_description"/>
                  
        </mapto>        
    </mapping>
    
    </definition>   
  </MappingDefinitions>

  <ColumnFormats>
    <ColumnFormat Name="PostingDate" Format="MM.dd.yy"/>
    <ColumnFormat Name="DocumentType"/>
    <ColumnFormat Name=" "/>
    <ColumnFormat Name="AccountType" Format="yyyy-MM-dd"/>
    <ColumnFormat Name="AccountNo" WrapChar="&quot;"/>
    <ColumnFormat Name="FundNo"/>
    <ColumnFormat Name="DimensionSpeedkeyCode" WrapChar="&quot;"/>
    <ColumnFormat Name="Dimension1"/>
    <ColumnFormat Name="Dimension2"/>
    <ColumnFormat Name="Dimension3"/>
    <ColumnFormat Name="Dimension4"/>
    <ColumnFormat Name="Dimension5"/>
    <ColumnFormat Name="Dimension6"/>
    <ColumnFormat Name="Dimension7"/>
    <ColumnFormat Name="Dimension8"/>
    <ColumnFormat Name="ExternalDocumentNo"/>
    <ColumnFormat Name="Description" WrapChar="&quot;"/>
    <ColumnFormat Name="Amount" Format="{0:##.00}"/>
  </ColumnFormats>
  
 </GLPayrollExportConfiguration>

}

XSLT 代码 {

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
                  xmlns:cs="urn:cs">

<xsl:template match="/">
<xsl:for-each select="Export/Record">
    <xsl:if test="Amount != 0">
    <!--need one of the below for each column-->
        <xsl:value-of select="'payrun_pay_date'"/>
        <xsl:value-of select="' '"/>
    
    <xsl:template match="DocumentType/">
        <xsl:variable name="aaa" select="PAYROLL"/>
        <xsl:variable name="bbb" select="payrun_pay_date"/>
            <xsl:value-of select="concat($aaa,$bbb)"/>
    </xsl:template>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="payrun_category_override_journal_number"/>
        <xsl:value-of select="UNREST"/>
        
    <xsl:template match="SuspensionSpeedKeyCode"/>
        <xsl:choose>
            <xsl:when test="override_segment_dynamic_labor_metric_code_CostNumber=' '">
            <xsl:value-of select="override_segment_charged_dynamic_org_level_onsitedepartment"/>
            </xsl:when>
            <xsl:otherwise>
            <xsl:value-of select="override_segment_dynamic_labor_metric_code_CostNumber"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        <xsl:value-of select="' '"/>
        
    <xsl:template match="Description"/>
        <xsl:variable name="ccc" select="payrun_pay_date"/>
        <xsl:variable name="ddd" select="payrun_category_override_description"/>
            <xsl:value-of select="concat($ccc,$ddd)"/>
    </xsl:template>
    
        <xsl:value-of select="payrun_amount"/>
    </xsl:template>
</xsl:stylesheet>

}

标签: xmlxsltxslt-1.0

解决方案


xsl:template元素不能包含xsl:template元素。

正如@michael.hor257k 所说,有许多 XSLT 处理器(或编辑器)可以为您提供更有意义的错误消息。此外,如果您不能立即看出此 XSLT 代码没有意义,那么您真的应该在进行更多编码之前花几个小时阅读该语言。


推荐阅读