Avatar billede nzc Nybegynder
29. marts 2004 - 10:15 Der er 19 kommentarer og
1 løsning

XmlDocument med ref til XSLT stylesheet

Hej!

Kan ikke helt forstå hvorfor det her ikke virker:

doc.LoadXml("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><?xml-stylesheet type=\"text/xsl\" href=\"C:\\Log.xsl\"?><Log><Static></Static></Log>");

For det første skal jeg sende xml'en til en webservice og allerede der får jeg brok. Men det er ikke det jeg er mest ked af. Jeg har prøvet at kalde doc.Save() men min ref til XSLT'en er der sq ikke :| Hvordan dælen får jeg den ref ind ???

NZC
Avatar billede nute Nybegynder
29. marts 2004 - 10:45 #1
hmm ... er ikke helt sikker på om jeg forstår dig helt, men ... det virker da ikek særlig smart at angive reference til et stylesheet på dit c-drev hvis du skal distribuere xml'en ?! modtager vil da aldrig kunne få fat i dette xsl ? eller har jeg misforstået ?
Avatar billede nzc Nybegynder
29. marts 2004 - 11:01 #2
jeg sender XmlDocumentet til en server hvorpå XLST'en befinder sig. Det er nemlig kun på serveren det skal være muligt at åbne xml'en i en browser. Men jeg kan bare ikke få referencen ind i XmlDocumentet :(((

En lille dårlig forklaring der :)
Avatar billede nute Nybegynder
29. marts 2004 - 11:11 #3
ok ... så du får ikke en fejl i selve parsingen af xml'en ? Fejlen ligger i at referencen ikke ligger i din xml når du modtager det på din server ?
Avatar billede nzc Nybegynder
29. marts 2004 - 11:28 #4
"ok ... så du får ikke en fejl i selve parsingen af xml'en ? " Nej

"Fejlen ligger i at referencen ikke ligger i din xml når du modtager det på din server ?" Ja :)
Avatar billede nute Nybegynder
29. marts 2004 - 12:28 #5
ehh ... det lyder da lidt skummelt. hvis du skriver ud din xml inden du sender det afsted, så ligger referencen der ?
Avatar billede nzc Nybegynder
29. marts 2004 - 13:02 #6
nope den er der ikke
Avatar billede nzc Nybegynder
29. marts 2004 - 13:05 #7
hmmm inden jeg sender den afsted er ref'en der godt nok ... men jeg ka ikke sende den når ref'en er der :(
Avatar billede nute Nybegynder
29. marts 2004 - 13:05 #8
hmm ... endnu mere skummelt.

poster du ikke lige lidt mere kode ?
Avatar billede nute Nybegynder
29. marts 2004 - 13:08 #9
måske du kan prøve at sætte 'validateOnParse' til false:

doc.validateOnParse = false;
doc.LoadXml( "..." );
Avatar billede nzc Nybegynder
29. marts 2004 - 13:16 #10
ka ikke finde validateOnParse ... bruger .NET 1.0 (kan ikke opgradere :( )
Avatar billede nute Nybegynder
29. marts 2004 - 13:28 #11
ah ... undskyld. jeg tænker i MSXML.DOMDocument baner.

denne kode kører fint for mig:

XmlDocument doc = new XmlDocument();
            doc.LoadXml("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><?xml-stylesheet type=\"text/xsl\" href=\"C:\\Log.xsl\"?><Log><Static></Static></Log>");
            Console.Write( doc.InnerXml );
            Console.In.ReadLine();

output fra denne, er:

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href
="C:\Log.xsl"?><Log><Static></Static></Log>

/nute
Avatar billede nute Nybegynder
29. marts 2004 - 13:31 #12
eh ... glem det. du skriver jo at du ikke kan sende med denne ref. my bad ... hvordan sender du dokumentet ? kode ?
Avatar billede nzc Nybegynder
29. marts 2004 - 14:18 #13
sender det som en XmlNode til web servicen:

public static void SaveInfo(XmlNode node)
        {   
            PC_Mon.h21112_vm1.Service1 WebRef = new PC_Mon.h21112_vm1.Service1();           
            WebRef.SaveInfo(node);           
        }
Avatar billede nute Nybegynder
29. marts 2004 - 14:29 #14
ehh ... det er jo klart det ikke fungerer ... du skal da sende hele dokumentet - det gør du ikke ved at sende det som en node! en xmlNode indeholder kun en node ... ikke referencer til stylesheets
Avatar billede nzc Nybegynder
29. marts 2004 - 14:43 #15
ah ok :(

har prøvet at gå en lidt anden vej. Har glemt alt om at få ref'en ind på client-siden og vil derfor ha den skrevet ind på serversiden. Men det er sku heller ikke helt nemt.

XmlNode xmlnode = GetLogByID(id);           
                XmlNodeReader xnReader = new XmlNodeReader(xmlnode);
                XmlDocument doc = new XmlDocument();
            doc.LoadXml("<?xml version='1.0' encoding='ISO-8859-1'?><?xml-stylesheet type='text/xsl' href='C:\\Log.xsl'?>");
                doc.Load(xnReader);

Der er ingen rodnode får jeg at vide... hvordan fixer man det?
Avatar billede nute Nybegynder
29. marts 2004 - 14:47 #16
ehh ... det er da en underlig måde at gøre det på. hvorfor sender du ikke bare hele XmlDocument xml'en over (med doc.outerXml), modtag dette som en streng på serversiden og læs dokumentet ind med doc.loadXml. Det er da ikke nogen pointe i at lave det mere besværligt end dette ?!
Avatar billede nzc Nybegynder
29. marts 2004 - 14:54 #17
heh nej det er nok rigtigt.

Men det var bare fordi jeg ikke kunne sende et XmlDocument over og så fandt jeg ud af at man kunne sende en XmlNode, hvorfor det blev den løsning jeg valgte.
Avatar billede nzc Nybegynder
29. marts 2004 - 14:56 #18
HAH

Din lille snak om strings gav mig en ide

XmlNode xmlnode = GetLogByID(id);               
                XmlDocument doc = new XmlDocument();
                doc.LoadXml("<?xml version='1.0' encoding='ISO-8859-1'?><?xml-stylesheet type='text/xsl' href='C:\\Log.xsl'?>" + xmlnode.OuterXml);
                doc.Save(temp);           

OG DET VIRKER :D

put da lige et svar ind :P
Avatar billede nute Nybegynder
29. marts 2004 - 14:57 #19
ah ... fino :-)

"svar"
Avatar billede nute Nybegynder
29. marts 2004 - 15:34 #20
- takker -
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester