.NET xslt 확장 개체를 구현하려고합니다. 예를 들어 here 및 there의 예제를 사용하여 xml 파일이 있는지 확인합니다. 나는 또한별로 도움이되지 않은 관련 게시물을 생각해 보았다..NET xslt 확장 개체가 없습니다.
나는 다음과 같은 코드로 확장을 찾으려고, 그것은 "확장 기능을 사용할 수 없습니다"표시
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:XsltExtensionObject="urn:XsltExtensionObject"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl XsltExtensionObject">
...
<xsl:choose>
<xsl:when test="function-available('XsltExtensionObject:getFile')">
Extension function is available
</xsl:when>
<xsl:otherwise>
Extension function is not available
</xsl:otherwise>
</xsl:choose>
...
다음과 같이 동일한 VS 2012 솔루션 내에서 XsltExtensionObject라는 별도의 클래스 라이브러리를 만들었습니다 (첫 번째 예제와 일관되게 VB에서 수행하지 않았습니다) :
Public Class FileExist
Private exist As Boolean
Public Sub New()
exist = False
End Sub
Public Function getFile(ByVal myFile As String) As Boolean
exist = System.IO.File.Exists(myFile)
Return exist
End Function
End Class
6,나는 다음과 같이 XSL 변환을 실행합니다
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(MapPath("homepage.xslt"));
XsltArgumentList xslArgs = new XsltArgumentList();
XsltExtensionObject.FileExist obj = new XsltExtensionObject.FileExist();
xslArgs.AddExtensionObject("urn:XsltExtensionObject", obj);
xmldoc.Load(MapPath("lists.xml"));
StringWriter sw = new StringWriter();
xslt.Transform(new XmlNodeReader(xmldoc), null, sw);
content.InnerHtml = sw.ToString();
}
는 왜 확장을 찾을 수 있습니까? 내가 여기서 무엇을 놓치고 있니? 어셈블리 참조?