xml - 导出 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="""/>
<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>
}
解决方案
xsl:template
元素不能包含xsl:template
元素。
正如@michael.hor257k 所说,有许多 XSLT 处理器(或编辑器)可以为您提供更有意义的错误消息。此外,如果您不能立即看出此 XSLT 代码没有意义,那么您真的应该在进行更多编码之前花几个小时阅读该语言。
推荐阅读
- sql-server - 添加新列并更改同一 SQL 脚本中的值时出错
- authentication - 使用 Redux 和 Flutter 登录
- c# - 如何在 C# 中使用 SHA256 签名对 ECDSA 进行签名和验证
- python - 用 numpy 计算估计方差导致无效值遇到错误
- java - Android / Java,观察者更新参数标准化:如何覆盖枚举
- c# - 旋转相机位置 xy 的逆对象
- typeorm - 覆盖 TypeORM 列选项
- visual-studio-code - vscode 中是否有本地 api 来按 glob 匹配文档文件?
- git - Git-LFS 在拉取过程中失败
- python - 映射数据框