Экспорт XSLT - элемент XSLT не может содержать элемент XSLT - PullRequest
0 голосов
/ 14 июля 2020

Я использую набор XML и XSLT-кодирования для извлечения определенных c данных из базы данных. XSLT может быть неправильно сформирован, но я не знаю, как обновить код XSLT. Когда я пытаюсь сохранить код в приложении, которое взаимодействует с базой данных, я получаю сообщение об ошибке в строке темы «Экспорт XSLT - элемент XSLT может не содержать элемент XSLT».

То, что я пытаюсь выполнить sh - это несколько вещей: a) Формат даты в 4-м столбце должен быть отформатирован как «ггггммдд» и объединен со значением в 3-м столбце; б) данные в 7-м столбце должны состоять не менее чем из 6 цифр, и есть ряд значений, в которых начальный ноль был удален из вывода; есть также оператор выбора, где если доступно значение 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>

}

1 Ответ

0 голосов
/ 14 июля 2020
Элементы

xsl:template не могут содержать элементов xsl:template.

Как говорит @ michael.hor257k, существует множество процессоров (или редакторов) XSLT, которые могут выдавать гораздо более значимое сообщение об ошибке. Кроме того, если вы не сразу видите, что этот код XSLT не имеет смысла, то вам действительно стоит потратить несколько часов на чтение о языке, прежде чем приступить к написанию кода.

...