私は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は、ユーザーコード
によって未処理でした メッセージ=値をnullにすることはできません。
パラメータ名:形式
paramNameに=フォーマット
ソース= mscorlib
のStackTrace:System.String.Formatで
XQSharp.XdmException.WrongParamNameTable(LineInfoで
(するIFormatProviderプロバイダー、文字列の形式は、[]引数オブジェクト) XQSharp.DynamicContext.ConvertArgument(IEnumerable`1値、lineInfo lineInfo、documentSet documentSet、StaticModuleContextコンテキスト、XmlQualifiedName名、BoundTypeでlineInfo、XmlQualifiedName ParameterNameが)XQSharp.DocumentSet.ImportParamNode(lineInfo lineInfo、のXPathNavigatorナビゲータ、XmlQualifiedName ParameterNameが)で
declaredType)XQSharp.Xslt.Evaluate(XmlQualifiedName initialMode、XmlQualifiedName initialTemplate、DynamicContextSettings設定、IResultDocumentHandlerでXQSharp.DynamicContext..ctor(StaticModuleContext staticContext、DynamicContextSettings設定、XmlQualifiedName initialMode、XmlQualifiedName initialTemplate、のInt32 stackSpace、のInt32 globalSpace、IResultDocumentHandler resultDocumentHandler)で
resultDocumentHandler)XQSharp.Xslt.ApplyTemplates(IXPathNavigable contextNode、ストリームresultDocument)
DにおけるCmsservices.XSLTEngine.test(文字列inputXml、列inputXsl)で で
:\ Projecten \ cmsservices \にApp_Code \ CmsservicesXSLTEngine.vb:ライン44 内部エラー:
私は間違っていますか?