Я пытаюсь использовать объекты XSLT в.NET через Powershell.
У меня есть следующие строки в моем документе XSL
<xsl:variable name=""p"" select=""Objects/Object/Property[@Name='distrolists']""/>
<xsl:value-of select=""replace($p, 'oldtext', 'newtext')""/>
И я настраиваю объект XslCompiledTransform следующим образом:
$xsltsettings = new-object System.Xml.Xsl.XsltSettings($true,$true)
$tr = new-object System.Xml.Xsl.XslCompiledTransform
$tr.Load($xsl, $xsltsettings,$(New-Object System.Xml.XmlUrlResolver))
$results = [System.Xml.XmlWriter]::Create("C:\output.html")
$tr.Transform($x,$results)
Однако, когда я его выполняю, я получаю следующую ошибку:
Exception calling "Load" with "3" argument(s): "Unexpected token ',' in the expression.
replace( -->,<-- 'oldtext', 'newtext')"
Похоже, что у.NET возникают некоторые проблемы, анализирующие запятые в функциях XSL. Я в значительной степени не понимаю, что случилось с моим XSL (или, возможно, процессор сломан).
Конечная цель этого раздела - взять список адресов электронной почты, разделенный на \r\n, и отобразить их по строке с помощью <br/>.
Как отметил @Tim C:
replace
- это функция XSLT 2.0, но XslCompiledTransform использует XSLT 1.0, поэтому функция не будет поддерживаться.
Вы должны взглянуть на Saxon-HE, если вам нужна функциональность XSLT 2.0 в.NET.
replace
- это функция XSLT 2.0, но XslCompiledTransform использует XSLT 1.0, поэтому функция не будет поддерживаться.