调用.NET Transform方法时,文档('')函数错误

时间:2014-12-08 19:12:17

标签: xml xslt

我有一个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

1 个答案:

答案 0 :(得分:1)

Load方法有一个重载,它带有一个带有样式表文件名或URL的字符串,使用它,XslCompiledTransform知道如何解决document('')。因此,请使用xslt.Load("XSLTTestFile.xslt", xsltSettings, new XmlUrlResolver())