我有一个xslt文件,其中包含我正在使用的xsl变量,就像查找表一样。
<xsl:variable name="TestLookup">
<lookup code="A" means="Test A"/>
<lookup code="B" means="Test B"/>
<lookup code="C" means="Test C"/>
</xsl:variable>
然后我这样称呼它。
<xsl:value-of select="document('')/*/xsl:variable[@name='TestLookup']/lookup[@code=current()]/@means"/>
当我在.NET中调用Transform方法时,我收到以下错误:
An error occurred while loading document ''
This operation is not supported for a relative URI.
基本上它告诉我它无法找到该文件
我需要一些在xslt文件中创建查找表的方法,并且能够使用.NET中的Transform命令调用它。
这篇文章有同样的问题,但我没有看到答案。关于p / 2功能的东西?
它还列出了node-set(),但我找不到任何关于使用node-set作为查找表的好文章。
using document() function in .NET XSLT generates error
添加更多代码
.NET代码
' get the xml from SQL
Dim xmlData As String = sqlXmlReader.Item("XmlData").ToString()
' read the xslt file
Using styleSheet = New StreamReader("XSLTTestFile.xslt")
' load the stylesheet from a resource
Using styleSheetReader As XmlReader = XmlReader.Create(styleSheet)
Dim xslt = New XslCompiledTransform()
Dim xsltSettings = New XsltSettings(True, False)
xsltSettings.EnableDocumentFunction = True
' load the stylesheet for transformation
xslt.Load(styleSheetReader, xsltSettings, New XmlUrlResolver())
Using stringWriter As New System.IO.StringWriter
' transform the xml document along with the stylesheet
Dim xmlDoc = New XmlDocument()
xmlDoc.LoadXml(xmlData)
xslt.Transform(xmlDoc, Nothing, stringWriter)
' dump the transformation to the browser control
_htmlString.Append(stringWriter.ToString())
End Using
End Using
End Using
答案 0 :(得分:1)
Load
方法有一个重载,它带有一个带有样式表文件名或URL的字符串,使用它,XslCompiledTransform
知道如何解决document('')
。因此,请使用xslt.Load("XSLTTestFile.xslt", xsltSettings, new XmlUrlResolver())
。