我打算使用XQSharp獲得xslt2轉換,但在嘗試調用ApplyTemplates時遇到異常。XQSharp簡單的XSLT2轉換問題
我的代碼:
<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程序
堆棧跟蹤:
在System.String.Format(的IFormatProvider提供商,字符串格式,對象[]參數)
在XQSharp.XdmException.WrongParamNameTable(LineInfo lineInfo,XmlQualifiedName parameterName)以
在XQSharp.DocumentSet.ImportParamNode(LineInfo lineInfo,XPathNavigator的導航器,XmlQualifiedName parameterName)以
在XQSharp.DynamicContext.ConvertArgument(IEnumerable`1值,LineInfo lineInfo,documentSet documentSet,StaticModuleContext上下文,XmlQualifiedName名稱,BoundType declaredType)
在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,流resultDocument)
在Cmsservices.XSLTEngine.test(字符串inputXml,字符串inputXsl)在
d:\ Projecten \ cmsservices \ App_Code文件\ CmsservicesXSLTEngine.vb:線44 InnerException:
我做錯了什麼?