Я пытаюсь получить преобразование xslt2 с помощью XQSharp, но я получаю исключение при попытке вызвать ApplyTemplates.
Мой код:
<WebMethod()>
Public Function test(ByVal inputXml As String, ByVal inputXsl As String) As String
Dim nameTable As XmlNameTable = New NameTable()
Dim xmlReaderSettings As New XmlReaderSettings()
xmlReaderSettings.NameTable = nameTable
Dim document As XdmDocument
Using reader As New StringReader(inputXml)
document = New XdmDocument(reader)
End Using
Dim querySettings As New XsltSettings(nameTable)
querySettings.ContextItemType = XdmType.Node
querySettings.ModuleResolver = New XmlUrlResolver()
Dim query As Xslt = Xslt.Compile(New StringReader(inputXsl),
querySettings)
Dim contextItem As XPathNavigator = document.CreateNavigator()
Dim result As Stream = New MemoryStream()
query.ApplyTemplates(contextItem, result)
Using reader As StreamReader = New StreamReader(result)
Return reader.ReadToEnd()
End Using
End Function
XmlInput:
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>hoi</title>
</head>
<body>
<p>Test</p>
</body>
</html>
XslInput:
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes" exclude-result-prefixes="xhtml xsl fn xs xdt">
<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
</xsl:stylesheet>
Исключение
Исключение System.ArgumentNullException не было обработано кодом пользователя
Сообщение = значение не может быть нулевым.
Имя параметра: формат
ParamName = формат
Источник = mscorlib
StackTrace:
в System.String.Format (поставщик IFormatProvider, формат String, аргументы Object [])
в XQSharp.XdmException.WrongParamNameTable (LineInfo lineInfo, XmlQualifiedName параметрName)
в XQSharp.DocumentSet.ImportParamNode (LineInfo lineInfo, навигатор XPathNavigator, параметр-имя XmlQualifiedName)
в XQSharp.DynamicContext.ConvertArgument (значение IEnumerable`1, LineInfo lineInfo, DocumentSet documentSet, контекст StaticModuleContext, имя XmlQualifiedName, BoundType Объявленный тип)
в XQSharp.DynamicContext..ctor (StaticModuleContext staticContext, DynamicContextSettings параметры, XmlQualifiedName initialMode, XmlQualifiedName initialTemplate, Int32 stackSpace, Int32 globalSpace, IResultDocumentHandler resultDocumentHandler)
в XQSharp.Xslt.Evaluate (XmlQualifiedName initialMode, XmlQualifiedName initialTemplate, параметры DynamicContextSettings, IResultDocumentHandler resultDocumentHandler)
в XQSharp.Xslt.ApplyTemplates (IXPathNavigable contextNode, Stream resultDocument)
в Cmsservices.XSLTEngine.test (String inputXml, String inputXsl) в
D: \ Projecten \ cmsservices \ App_Code \ CmsservicesXSLTEngine.vb: строка 44
InnerException:
Что я делаю не так?