Jakie są allowed.NET zwraca typy z metody obiektu rozszerzenia XSLT?

. NET pozwala rozszerzyć XSLT za pomocą tzw. extension object. Bardzo poręczny i bardzo wygodny. Można to zrobić tworząc klasę:

public class VeryHandyExtensionFunctions
{
    public string VerySmartStringConcat(XPathNodeIterator NodeList)
    {
       return "some very smart string concat based on NodeList";
    }
}

W oczekiwaniu na jakąś magię (patrz poniżej) możesz odnieść się do VerySmartStringConcat jako części twojego xslt:

<xsl:value-of select="someprefix:VerySmartStringConcat(nodes[@withsomeattribute])"/>

Jedyną rzeczą, którą należy zrobić, aby tak się stało, jest przekazanie instancji klasy rozszerzeń (veryhandyextensionfunctions powyżej) do klasy XslCompiledTransform, używając XsltArgumentList:

XsltArgumentList xsltArg = new XsltArgumentList();
xsltArg.AddExtensionObject("SomeUriResolvingToSomePrefix",new VeryHandyExtensionFunctions);
XslCompiledTransform xslTransform;
XmlWriter W = XmlWriter.Create(SomeTarget, Xslt.OutputSettings);
xslTransform.Transform(SomeXmlDocument, xsltArg, W);

. NET jest dość Inteligentny w zastanawianiu się, jak przekonwertować typy XML na parametry wejściowe i typy zwrotne funkcji rozszerzenia. Jednak co jakiś czas narzeka na typ nie wsparcia. Jakie są obsługiwane typy?

 10
Author: Boaz, 2008-12-13

1 answers

Po kilku badaniach znalazłem to na http://msdn.microsoft.com/en-us/magazine/bb986125.aspx :

3C Typ XPath - > równoważna Klasa. NET (Typ)
String - > System.String
Boolean - > System.Boolean
Numer - > System.Double
Result Tree Fragment - > System.Xml.XPath.XPathNavigator
Node Set - > System.Xml.XPath.XPathNodeIterator

 13
Author: Boaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-13 20:52:15