El uso de la función document () en .NET XSLT genera un error

Me gustaría usar recursos incrustados en mi archivo XSLT, pero al invocar ‘document (…)’ C # se queja de que “Error al cargar el documento …”

Me gustaría usar los recursos definidos en el archivo XSLT y obtenerlos de este modo: “document (”) / / my: resources / ” …

¿¿Cómo puedo hacer eso??

ex xsl:

   tryb    

¿Cómo puedo obtener acceso a dicha estructura sin excepciones en C #? Voy a añadir que durante la transformación estática a través de ex. Opera todo funciona bien.

  

El valor del atributo de select no es una expresión XPath sintácticamente correcta . Cada procesador XSLT compatible debe generar un error.

Solución :

Corrija lo anterior para:

  

Si todavía hay una excepción generada , lea acerca de la clase XsltSettings .

Luego crea una instancia de XsltSettings con este constructor , como este:

 XsltSettings(true, false) 

No habilite las secuencias de comandos : mantenga el segundo argumento del constructor como false .

A continuación se muestra un fragmento de código más completo :

 // Create the XsltSettings object with document() enabled and script disabled. XsltSettings settings = new XsltSettings(true,false); // Create the XslCompiledTransform object and load the style sheet. XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("sort.xsl", settings, new XmlUrlResolver()); 

Actualización : otra posible razón para un error es cuando la hoja de estilo XSLT se crea dinámicamente en la memoria (no viene del archivo). En este caso, un procesador XSLT normalmente no puede resolver el uri relativo en el document('') .

En este último caso, la solución es hacer que el elemento deseado sea el contenido de una xsl:variable y usar la función de extensión xxx:node-set() para tratar este elemento.