SQL Server XML i zamykanie znaczników

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&amp;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.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s