Oprettet ons. d. 29. april 2009 kl. 16:34:06

kapoou
kapoou (10.045 point. Point ude: 5.980)

Ændre værdig i output

Er der nogen måde jeg kan ændre doctype dynamisk i følgende output.

<xsl:output method="html" name="doctype" doctype-system="http://www.w3.org/ (...)
      doctype-public="-//W3C//DTD XHTML Basic 1.0//EN" />

Jeg vil gerne kunne ændre denne alt efter klienten der læser siden.

Skrevet ons. d. 29. april 2009 kl. 16:50:21| #1

arne_v
arne_v (1.005.658 point)
Din transformering laves client side i JavaScript ?

Jeg vil tro at du bliver noedt til at kode noget JavaScript til det. Eventuelt et callout.

Skrevet ons. d. 29. april 2009 kl. 16:57:58| #2

kapoou
kapoou (10.045 point)
Nej jeg har nu ikke noget JS med på siden. Det hele kører fra en c# kode om bruger xsl filen.

Skrevet ons. d. 29. april 2009 kl. 17:08:53| #3

arne_v
arne_v (1.005.658 point)
OK - saa det er server side.

Hent den client identifikation du skal bruge fra Request objektet og lav en callout i din XSL til noget C# der bruger den client identifikation.

Skrevet ons. d. 29. april 2009 kl. 21:21:11| #4

kapoou
kapoou (10.045 point)
Jeg er ikke super skarp til xsl endnu så du bliver nok nødt til at fortælle mig hvordan jeg laver denne callout. Hvis jeg nu i C# koden har fundet frem til hvilken doctype det er jeg vil bruge hvordan skal jeg så få denne ud på siden?

Skrevet tor. d. 30. april 2009 kl. 04:46:47| #5

arne_v
arne_v (1.005.658 point)
Til inspiration:

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

namespace E
{
    public class Util
    {
        public string DocType()
        {
            return @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/ (...)
        }
    }
    public class MainClass
    {
        public static void Main(string[] args)
        {
            string input =
@"<something>
    <data>ABC</data>
</something>";
            string transform =
@"<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/ (...)
                xmlns:ms='urn:schemas-microsoft-com:xslt'
                xmlns:cs='urn:arne:cs'
                version='1.0'>
             
<xsl:template match='something'>
<xsl:value-of disable-output-escaping='yes' select='cs:DocType()'/>
<html>
<head>
<title>Demo</title>
</head>
<body>
<p>Data = <xsl:value-of select='data/text()'/></p>
</body>
</html>
</xsl:template>

</xsl:stylesheet>";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(input);
            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load(new XmlTextReader(new StringReader(transform)), new XsltSettings(true, true), null);
            StringWriter sw = new StringWriter();
            XmlTextWriter wrt = new XmlTextWriter(sw);
            wrt.Formatting = Formatting.Indented;
            XsltArgumentList xal = new XsltArgumentList();
            xal.AddExtensionObject("urn:arne:cs", new Util());
            xslt.Transform(doc, xal, wrt);
            Console.WriteLine(sw.ToString());
            Console.ReadKey();
        }
    }
}

Skrevet man. d. 04. maj 2009 kl. 15:31:46| #6

kapoou
kapoou (10.045 point)
Tak for svaret. Jeg kan dog ikke få den til at skrive det up på siden. Jeg har bruger et eksternt xsl ark til tranformationen. Kan det have noget med det at gøre? Jeg oplever desuden at hvis jeg i xsl arket har skrevet

<link rel="stylesheet" type="text/css" media="all" href="/files/global/system/stylesheet/styles.css"/>

eller

<link rel="stylesheet" type="text/css" media="all" href="/files/global/system/stylesheet/styles.css"></link>


så fjerner den henholdvis / og </link> når den skriver det ud. Jeg bruger følgende kode til at transformere.

XhtmlTextWriter writer = new XhtmlTextWriter(Response.Output);
xslt.Transform(doc, xslArg, writer);

Skrevet man. d. 04. maj 2009 kl. 15:38:57| #7

kapoou
kapoou (10.045 point)
Det skal måske lige siges at
   
<META http-equiv="Content-Type" content="text/html; charset=utf-8">

automatisk bliver sat ind i koden.

Jeg kan simpelthen ikke se hvordan jeg kan ændre dette til f.eks.

application/vnd.wap.xhtml+xml

Skrevet man. d. 11. maj 2009 kl. 14:35:21| #8

jokkejensen
jokkejensen (36.245 point)
det med den lukker tags er fordi du har <xsl:output> sat til xml, og ikke html..

Personligt bruger jeg <xsl:text disable-output-escaping="yes"><[CDATA[]]></xsl:text>

Men du kan også bare lave et "tomt" tegn mellem <link> og </link>, ellers læser parseren det som en tom node, og lukker den korrekt.

/J

Skrevet man. d. 11. maj 2009 kl. 17:05:08| #9

kapoou
kapoou (10.045 point)
-> jokkejensen

Den er sat til

<xsl:output method="html" omit-xml-declaration="yes" encoding="UTF-8" />

Problemet er netop at

<link rel="stylesheet" type="text/css" media="all" href="/files/global/system/stylesheet/styles.css"></link>

bliver til

<link rel="stylesheet" type="text/css" media="all" href="/files/global/system/stylesheet/styles.css">

så den ikke er lukket.

Skrevet tir. d. 12. maj 2009 kl. 13:49:32| #10

jokkejensen
jokkejensen (36.245 point)
Nej, så skal du lave det til xml.. Eller udskrive det som xsl:text.

Men pas så på dine <script src="" />.. de skal lukkes the old way, ellers fucker <= ie7 totalt.

Altså <script src=""></script> og ikke <script src="" />.

/J

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Benytte XSLT til tranformering af data imellem 2 systemer

Oprettet den 8. december 2011 kl. 11.52
bongo13 giver 60 point for svar | Giv et svar »

fo:block kollapser

Oprettet den 14. november 2011 kl. 11.16
schristensen giver 200 point for svar | Giv et svar »

Select i Xpath, ignorere case

Oprettet den 20. oktober 2011 kl. 00.01
wise giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger