Co zrobić, jeśli chcemy wymusić, aby SQL Server przetwarzał w XSLT dane XML w postaci np.<imie="Bartek"></imie>
zamiast tak jak to jest w rzeczywistości: <imie="Bartek" />
?
Z jednej strony może i niewielki problem, ale przy próbie wygenerowania HTMLa będzie to powodowało błędy w takim przypadku:
chcemy poprawnie: <script type="text/javascript" src="jquery.js"></script>
,
dostajemy niepoprawnie: <script type="text/javascript" src="jquery.js" />
.
Obejście znalezione na StackOverflow: można dodać komentarz między znaczniki script. Przykład (fragment większego kodu przetwarzającego, akurat ten tworzy sekcję HEAD):
SET @sXSL = N'<xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"> <xsl:template match = "/element"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta> <title>Tytul</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> <link href="http://fonts.googleapis.com/css?family=Monda:400,700&subset=latin,latin-ext" rel="stylesheet" type="text/css" /> <style type="text/css"> body, p, div, ul li, td, th {font-family : "Titillium Web", sans-serif; font-size : 11pt; font-weight : normal} th {text-align : left;} th.center {text-align : center;} </style> <script src="http://code.jquery.com/jquery-1.9.1.js"><xsl:comment> </xsl:comment></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"><xsl:comment> </xsl:comment></script> </head> </xsl:template> </xsl:stylesheet>';
W wyniku otrzymujemy fragment:
<script src="http://code.jquery.com/jquery-1.9.1.js"> <!----> </script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"> <!----> </script>
Samo przetwarzanie XSLT w SQL Server to odrębny wpis – ogólnie rzecz biorąc obsługa jest przez kod napisany w C# i dołączony jako zewnętrzna biblioteka przez polecenia CREATE ASSEMBLY.