我使用一组XML和XSLT编码从数据库中提取特定数据。XSLT的格式可能不正确,但我不确定如何更新XSLT代码。当我尝试在与数据库交互的应用程序中保存代码时,我在主题行"Export XSLT - XSLT element may not code element“中得到错误消息。
我试图完成的是几件事: 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="""/>
<ColumnFormat Name="FundNo"/>
<ColumnFormat Name="DimensionSpeedkeyCode" WrapChar="""/>
<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="""/>
<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>}
发布于 2020-07-14 14:41:46
xsl:template元素不能包含xsl:template元素。
正如@michael.hor257k所说,有许多XSLT处理器(或编辑器)可以提供更有意义的错误消息。此外,如果您不能立即看到这段XSLT代码毫无意义,那么在进行更多编码之前,您确实应该花几个小时阅读该语言的相关知识。
https://stackoverflow.com/questions/62886534
复制相似问题