0
我有一個可視基本文件,其中包含許多我想在我的XSL中使用的函數。我可以在XSL項目中將其構建爲一個dll和引用,但我不知道如何在我的XSL文件中引用它。我正在使用visual studio。XSL:在XSL中使用外部VB函數
我得到錯誤「無法找到實現前綴的腳本或外部對象......」
我想要做的事,如:
的xmlns:MYLIB =「甕:extnlib.dll」
有沒有人這樣做?
我有一個可視基本文件,其中包含許多我想在我的XSL中使用的函數。我可以在XSL項目中將其構建爲一個dll和引用,但我不知道如何在我的XSL文件中引用它。我正在使用visual studio。XSL:在XSL中使用外部VB函數
我得到錯誤「無法找到實現前綴的腳本或外部對象......」
我想要做的事,如:
的xmlns:MYLIB =「甕:extnlib.dll」
有沒有人這樣做?
您需要使用XsltArgumentList傳入擴展名。
舉個例子:
Dim xmlPath As String : xmlPath = sArgs(0)
Dim xsltPath As String : xsltPath = sArgs(1)
Dim dllFileName As String : dllFileName = sArgs(2)
Dim xsltReader As XmlTextReader = New XmlTextReader(xsltPath)
Dim xsltDoc As XslCompiledTransform = New XslCompiledTransform()
xsltDoc.Load(xsltReader, New XsltSettings(), New XmlUrlResolver())
Dim xslArg As XsltArgumentList = New XsltArgumentList()
Dim dll As Assembly = Assembly.LoadFrom(dllFileName)
For Each objType As Type In dll.GetTypes()
If objType.IsPublic Then
Dim ext As Object = Activator.CreateInstance(objType)
xslArg.AddExtensionObject("urn:" & dllFileName & "#" & objType.Name, ext)
End If
Next
Dim xpathDoc As XPathDocument = New XPathDocument(New XmlTextReader(xmlPath))
Dim outWriter As XmlWriter = XmlWriter.Create(Console.Out)
xsltDoc.Transform(xpathDoc, xslArg, outWriter)
outWriter.Flush()
outWriter.Close()
我的分機處於XsltExtensions.dll,在其中我有:
Public Class Simple
Public Function DateFormat(ByVal dateToParse As String, ByVal format As String) As String
DateFormat = DateTime.Parse(dateToParse).ToString(format)
End Function
End Class
所以把他們放在一起:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="urn:XsltExtensions.dll#Simple" exclude-result-prefixes="my">
<xsl:template match="/">
<root>
<xsl:value-of select="my:DateFormat('3/9/2002', 'yyyy-MM-dd')"/>
</root>
</xsl:template>
</xsl:stylesheet>