2010-09-09 11 views
8

Je crée un document XML et je voulais avoir une référence au fichier XSLT.Ajouter une référence de feuille de style au document XML dans Linq?

//<?xml-stylesheet type="text/xsl" href="OBReport.xslt"?> 

à cette génération XML:

XElement xml = new XElement("ReportedOn", 
        from dl in EL.DocumentLog.ToList() 
        join o in EL.Organization 
        on dl.OrganizationID equals o.OrganizationId 
        where dl.ActionDate >= stDate & 
        dl.ActionDate <= enDate 
        orderby dl.DefendantName, dl.DocumentName 
        select new XElement("persons", 
           new XAttribute("documentName", dl.DocumentName), 
           new XElement("defendantName", dl.DefendantName), 
           new XElement("actionDate", dl.ActionDate.ToString()), 
           new XElement("startDate", dl.StartDate.ToString()), 
          new XElement("endDate", dl.EndDate.ToString()), 
          new XElement("organizationName" , o.OrganizationName))); 
+0

@Henk Holterman: Cela ne fait aucune différence si l'OP souhaite ajouter un PI pour une feuille de style XSLT ou une feuille de style CSS. De même, faire référence à une feuille de style XSLT dans un document XML ne fait pas partie des spécifications XSLT. Et enfin, l'OP veut le faire avec LINQ, non avec XSLT lui-même. Donc, veuillez annuler votre édition de titre et d'étiquette. –

+0

@Alejandro: Non, l'instruction de traitement fait partie de la réponse, pas de la question. Et j'ai trouvé PI à énigmatique. –

+0

@Henk Holterman: Je pense que ce '(Texte de la question) ** est un PI ... **. Mais cela n'a rien à voir avec mes arguments précédents –

Répondre

10

Ajouter un élément XProcessingInstruction.

Et non à votre XElement (qui peut être utilisé comme un document mais avec des limitations) mais à un XDocument enveloppant. Donc, après votre code:

XElement body = ...; // root XElement from your Linq statement 
XDocument doc = new XDocument(
     new XProcessingInstruction("xml-stylesheet", "type='text/xsl' ref='hello.xsl'"), 
     body);