Я пытаюсь добавить дату на страницу HTML, сгенерированную XML при использовании преобразования XSLT через SSIS.
Возьмите следующее XML:
<RootNode>
<row>
<Greeting>HelloWorld!</Greeting>
</row>
</RootNode>
Используйте следующий XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<msxsl:script language="C#" implements-prefix="cs">
<![CDATA[
public string datenow() {
DateTime dt = System.DateTime.Now;
do {
dt = dt.AddDays(1);
} while(IsWeekEnd(dt));
return(dt.ToString("dd/MM/yyyy"));
}
private static bool IsWeekEnd(DateTime date) {
return date.DayOfWeek == DayOfWeek.Saturday
|| date.DayOfWeek == DayOfWeek.Sunday;
}
]]>
</msxsl:script>
<xsl:template match="/RootNode">
<html>
<body>
<table border="1">
<xsl:for-each select="row">
<tr>
<td>
<xsl:value-of select="Greeting" /> <xsl:value-of select="cs:datenow()" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Я следовал этим инструкциям: https://www.tutorialgateway.org/ssis-xml-task-to-transform-xml-file-using-xslt/
Если я запускаю это перед развертыванием, все работает, но как только я разверну его , затем он не запускает часть сценариев.
Затем я создал сценарий PowerShell для преобразования, опять же, если я запускаю перед развертыванием, все работает.
Сценарий PowerShell:
param
(
[Parameter(Mandatory = $True)][string]$InputFile,
[Parameter(Mandatory = $True)][string]$TransformFile,
[Parameter(Mandatory = $True)][string]$OutputFile
)
try
{
# Log in Parameters
#
Write-Host "Input XML: $InputFile"
Write-Host "Transform XSL: $TransformFile"
Write-Host "Output XML: $OutputFile"
#
# Not Using abs paths .. just to be safe
#
# Edit PackagePath to point to Package Path
#
$PackagePath = "D:\SSIS_DATA\REF EXPORT\XMLRequest\"
#
$InputFile = Join-Path $PackagePath $InputFile
$TransformFile = Join-Path $PackagePath $TransformFile
$OutputFile = Join-Path $PackagePath $OutputFile
#
Write-Host "Input XML: $InputFile"
Write-Host "Transform XSL: $TransformFile"
Write-Host "Output XML: $OutputFile"
#
# Xsl Transform Settings - Allow scripting in XSL
#
$XsltSettings = New-Object System.Xml.Xsl.XsltSettings
$XsltSettings.EnableDocumentFunction = 1
$XsltSettings.EnableScript = 1
#
# Load and Process Files
#
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($TransformFile, $XsltSettings, $(New-Object System.Xml.XmlUrlResolver))
$xslt.Transform($InputFile, $OutputFile)
#
Write-Host "Generated output is on path: $OutputFile"
}
catch
{
Write-Host $_.Exception -ForegroundColor Red
}
В скрипте PowerShell вы можете видеть, что я включаю сценарий и функцию документа через параметр XSLT, установив = 1, я также пробовал True и $ True.