Je dois générer un GUID avec XSLT et si nécessaire c #, quelqu'un sait-il comment faire le mieux? P>
Il est de générer des identifiants uniques pour les éléments HTML. P>
4 Réponses :
C # fournit une méthode statique GUID.NewGuid (). Je m'attendrais à ce que toute mise en œuvre XSLT puissance fortement tirer parti de certains composants spécifiques au système, car les GUID sont souvent générés en partie basés sur une adresse matérielle / mac / etc. sur la machine sous-jacente. P>
Je sais sur le GUID.NewGuid, mais comment puis-je appeler cela de XSLT?
Une solution est via une méthode d'extension XSL comme ici: Pedautreppe.com /post/calling-c-fonction-in-xsl.aspx
Merci pour les commentaires, mais le fichier XSLT s'appellera plusieurs fois sur une page génératrice d'un élément par heure, donc je ne pense pas que l'ID de génération fonctionnerait. Toute autre idée?
@Burt - Voir si cela aide: Stackoverflow .com / questions / 4509662 / ...
J'ai fini simplement en utilisant une méthode d'extension et une méthode d'emballage.NewGuid () dans une méthode statique, puis appelez ceci de mon XSLT, il était suffisamment facile une fois que j'ai compris comment fonctionnent les méthodes d'extension. P>
avec c #, il peut être réalisé facilement avec Blocs de script utilisant MSXSL: Script .
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts"> <msxsl:script language="C#" implements-prefix="user"> <![CDATA[ public string getguid(){ return Guid.NewGuid().ToString(); } ]]> </msxsl:script> <xsl:template match="data"> <Guid><xsl:value-of select="user:getguid()"/></Guid> </xsl:template> </xsl:stylesheet>
Il y a une courte expression xpath pour cela, voir: Stackoverflow.com/a/64792196/36305