Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More xslt functions 2022 3 #971

Merged
merged 2 commits into from Sep 30, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
70 changes: 36 additions & 34 deletions backend/Origam.Rule/Xslt/MicrosoftXsltEngine.cs
Expand Up @@ -63,21 +63,7 @@ public MicrosoftXsltEngine(IPersistenceProvider persistence)
Hashtable parameters, string transactionId,
IDataStructure outputStructure, bool validateOnly)
{
// ORIGAM Business Rules Extension object
XsltArgumentList xslArg = new XsltArgumentList();
foreach (var functionsDefinition in functionsDefinitions)
{
if (functionsDefinition.Container is
IOrigamDependentXsltFunctionContainer origamContainer)
{
origamContainer.TransactionId = transactionId;
}
xslArg.AddExtensionObject(
functionsDefinition.NameSpaceUri, functionsDefinition.Container);
}
xslArg.AddExtensionObject(ExsltNamespaces.DatesAndTimes, new ExsltDatesAndTimes());
xslArg.AddExtensionObject(ExsltNamespaces.Strings, new ExsltStrings());
xslArg.AddExtensionObject(ExsltNamespaces.RegularExpressions, new ExsltRegularExpressions());
XsltArgumentList xslArg = BuildArgumentListWithFunctions(transactionId);

// If source xml is completely empty (not even a root element), we add one
// with a name of dataset.datasetname (that's how root element looks like when
Expand Down Expand Up @@ -270,25 +256,7 @@ public MicrosoftXsltEngine(IPersistenceProvider persistence)
IXPathNavigable input, object xsltEngine, Hashtable parameters,
string transactionId, Stream output)
{
// ORIGAM Business Rules Extension object
XsltArgumentList xslArg = new XsltArgumentList();
foreach (var functionsDefinition in functionsDefinitions)
{
if (functionsDefinition.Container is
IOrigamDependentXsltFunctionContainer origamContainer)
{
origamContainer.TransactionId = transactionId;
}
xslArg.AddExtensionObject(
functionsDefinition.NameSpaceUri, functionsDefinition.Container);
}
xslArg.AddExtensionObject(
ExsltNamespaces.DatesAndTimes, new ExsltDatesAndTimes());
xslArg.AddExtensionObject(
ExsltNamespaces.Strings, new ExsltStrings());
xslArg.AddExtensionObject(
ExsltNamespaces.RegularExpressions,
new ExsltRegularExpressions());
XsltArgumentList xslArg = BuildArgumentListWithFunctions(transactionId);
try
{
StringBuilder traceParameters = new StringBuilder();
Expand Down Expand Up @@ -415,6 +383,40 @@ public MicrosoftXsltEngine(IPersistenceProvider persistence)
}
}

private XsltArgumentList BuildArgumentListWithFunctions(string transactionId)
{
XsltArgumentList xslArg = new XsltArgumentList();
foreach (var functionsDefinition in functionsDefinitions)
{
if (functionsDefinition.Container is
IOrigamDependentXsltFunctionContainer origamContainer)
{
origamContainer.TransactionId = transactionId;
}

xslArg.AddExtensionObject(
functionsDefinition.NameSpaceUri, functionsDefinition.Container);
}

xslArg.AddExtensionObject(ExsltNamespaces.DatesAndTimes,
new ExsltDatesAndTimes());
xslArg.AddExtensionObject(ExsltNamespaces.Strings, new ExsltStrings());
xslArg.AddExtensionObject(ExsltNamespaces.RegularExpressions,
new ExsltRegularExpressions());
xslArg.AddExtensionObject(ExsltNamespaces.Math, new ExsltMath());
xslArg.AddExtensionObject(ExsltNamespaces.Random, new ExsltRandom());
xslArg.AddExtensionObject(ExsltNamespaces.Sets, new ExsltSets());
xslArg.AddExtensionObject(ExsltNamespaces.GdnDatesAndTimes,
new GdnDatesAndTimes());
xslArg.AddExtensionObject(ExsltNamespaces.GdnMath, new GdnMath());
xslArg.AddExtensionObject(ExsltNamespaces.GdnRegularExpressions,
new GdnRegularExpressions());
xslArg.AddExtensionObject(ExsltNamespaces.GdnSets, new GdnSets());
xslArg.AddExtensionObject(ExsltNamespaces.GdnStrings, new GdnStrings());
xslArg.AddExtensionObject(ExsltNamespaces.GdnDynamic, new GdnDynamic());
return xslArg;
}

private void TraceResult(IXmlContainer traceDocument)
{
StringBuilder b = new StringBuilder();
Expand Down