Toon posts:

[C#/XML] Saving xml tags within xml tag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een applicatie die xml bestanden aanmaakt op basis van invoer van een gebruiker. Deze XML bestanden worden gehangen in een website, en worden opgemaakt door een XSLT stylesheet.

Hier geen probleem, alleen mijn XSLT is zo opgebouwd dat het de body van de webpagina op basis van xml tags binnen de xml tag opmaakt.

Dus bijvoorbeeld:
XML:
XML:
1
2
3
<subjectbody>
  Some  <bold>bold</bold> text
</subjectbody>


Bovenstaande XML word opgemaakt met de volgende XSLT

XML:
1
2
3
4
5
6
7
8
9
<!--*************************************************-->
<!--************************bold************-->
<!--*************************************************-->
    <xsl:template match="bold">
      <b>
         <xsl:apply-templates/>
      </b>
    </xsl:template>
<!--*************************************************-->


Nu gebruik ik in mijn applicatie, XmlDocument om een bestaande XML file te editten. Zodra ik de Save method van het XmlDocument aanroep, word bovenstaande xml als volgt opgeslagen:

XML:
XML:
1
2
3
<subjectbody>
  Some &lt;bold&gt;bold&lt;/bold&gt; text
</subjectbody>


Hierdoor slaagt mijn XSLT stylesheet er dus niet in, om de text dikgedrukt te maken.

Nu is mijn vraag dus hoe ik kan voorkomen dat XmlDocument dit zo opslaat?

Meer info? Just ask.

Verder is iedere suggestie is welkom.

Verwijderd

Een dtd of schema erin hangen die verteld welke entiteiten erin mogen voorkomen ipv CDATA?

Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 18 november 2005 @ 15:23:
Een dtd of schema erin hangen die verteld welke entiteiten erin mogen voorkomen ipv CDATA
Dat heb ik dus. En het probleem zit 'm niet in het weergeven via XSLT, maar in de XmlDocument van de .NET classes. Die saved de XML, alleen dus niet zoals ik dat wil dat ie dat doet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:56
Tja, blijkbaar ziet die XmlDocument die bold niet als een node, maar als gewone tekst.
Je hebt dat ws gewoon 'zo' ingetyped ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
ja ik heb dat zo ingetyped, maar dat maakt niet uit. XML is gewoon text.

Anyway, ik heb de oplossing al, namelijk:

C#:
1
2
XmlNode node = docSubject.SelectSingleNode("main/content/pagefragment/subjectbody");
node.InnerXml = "test <bold>bold</bold> test" ;


Nu maakt ie van de < en de > geen ;lt; en ;gt;.

Eerst gebruikte ik ipv. InnerXml property InnerText om dit element te "setten".

Duidelijk? Zo niet, ask away!