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.