[Java] xsl jdom document koppelen.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Zoals de topic al zegt, hoe kan ik een xsl bestand aan een jdom document koppelen?
code:
1
2
3
4
5
6
7
    Element element = XMLWriter.write(solutionSet);
            Document document = new Document(element);
        
            FileOutputStream fileOutputStream = new FileOutputStream(new File("solutionSet.xml"));
            XMLOutputter outputter = new XMLOutputter("  ", true);
            outputter.output(document,fileOutputStream);
            fileOutputStream.close();

[edit] verkeerde naam staat in topic. voor zover ik weet bestaat er nog geen sxsl :) moet dus xsl zijn :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kunt twee dingen doen :

1. De JDOM boom transformeren met XSLT naar een andere vorm. Je moet dan ff kijken naar de JAX transformatie API's en dit combineren met JDOMSource. Je kunt hier tussen de regels door een voorbeeld vinden (zie onderaan):

http://www.pandoramix.org/PostingML/application.html

2. Een processing instruction opnemen zoals je dit zou doen in een XML bestand wat je door een browser wilt laten transformeren met een bepaalde stylesheet. Dit is gewoon een normale PI. Veel bijzonders is daar niet aan :) . Je XML document wordt dan dus niet getransformeerd, maar een browser kan hem transformeren.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
en hoe krijg ik #2 voor elkaar?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Maak een ProcessingInstruction en voeg die toe aan de content van je Document...
code:
1
2
3
public Document addContent(ProcessingInstruction pi)

Adds the specified PI to the document.

Als hij hiermee achteraan komt moet je het ff via de 'live' List van getContent() doen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Of weet je niet hoe de PI eruit moet zien?

Check trouwens ff de 'mutable' String in Java in het 3d topic. (laatste post)

Misschien iets voor je String lib ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
nee, ben nog een xml noob :) en ik zal hem eens bekijken :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Owh zeg dat dat meteen ;)

Voorbeeldje:
code:
1
<?xml-stylesheet type="text/xsl" href="got-favourites.xsl"?>

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
ik heb nu processingInstruction gevonden. Maar een van de constructors heeft 2 strings nodig en de andere een string en een map.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

kunnen jullie dat niet gewoon via icq/msn doen? :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De eerste string is de naam: xml-stylesheet.

De map zijn de 'attributen' van de PI. In dit geval moet je dus ff een map maken met "type" -> "text/xsl" en "href" -> "jouw xslt locatie".

Lijkt mij wel aardig logisch :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
OiSyN: kunnen jullie dat niet gewoon via icq/msn doen? :P
Tssss ;) . Vind je het niet interessant? :P

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op zaterdag 29 december 2001 04:17 schreef mbravenboer het volgende:
De eerste string is de naam: xml-stylesheet.

De map zijn de 'attributen' van de PI. In dit geval moet je dus ff een map maken met "type" -> "text/xsl" en "href" -> "jouw xslt locatie".

Lijkt mij wel aardig logisch :) .
niet voor een xml newbie :) thanx

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
schijnbaar doe ik nog steeds iets fout, want hij verwerkt die processing instruction niet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
    Element element = XMLWriter.write(solutionSet);
            Document document = new Document(element);
            Map map = new HashMap();
            map.put("type","text/xsl");
            map.put("href","multiDatabase.xsl");
            ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",map);
            document.addContent(pi);
            
            FileOutputStream fileOutputStream = new FileOutputStream(new File("solutionSet.xml"));
            XMLOutputter outputter = new XMLOutputter("  ", true);
            outputter.output(document,fileOutputStream);
            fileOutputStream.close();

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
mbravenboer: Als hij hiermee achteraan komt moet je het ff via de 'live' List van getContent() doen.
Laat de xml dan eens zien die eruit komt?

Als je Mozilla gebruikt kan het ook aan het mime-type liggen van de stylesheet. Staat die goed?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
de xml code... (stukje ervan :) )
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<solutionSet>
  <solution>
    <CVAPair>
    <consequent text="goals" />
    <value text="false" />
    <assignment text="goals:=((is_unknown(c)=is_unknown(b))=is_unknown(a))" type="rule" />
    </CVAPair>
    <directAntecedents>
    <solution>
      <CVAPair>
        <consequent text="c" />
        <value text="3" />

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
en als ik die xsl regel met de hand aan mijn xml bestand toe voeg dan laat hij het wel goed zien.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Staat de PI dan niet onderaan? Die moet dus bovenaan staan... Daarom moet je hem [/b]eerst[/b] toevoegen of zelf vooraan zetten via de live List die je met getContent kunt krijgen...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Hij staat inderdaad onderaan :)
code:
1
2
3
  </solution>
</solutionSet>
<?xml-stylesheet href="multiDatabase.xsl" type="text/xsl"?>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Hij staat inderdaad onderaan :)
Raadsel opgelost :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
de nieuwe code. Nu staat wel boven aan die processing instruction.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Element element = XMLWriter.write(solutionSet);
            Document document = new Document(element);
            
            Map map = new HashMap();
            map.put("type","text/xsl");
            map.put("href","solutionSet.xsl");
            ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",map);
            document.getContent().add(0,pi);
            
            //document.addContent(pi);
            
            FileOutputStream fileOutputStream = new FileOutputStream(new File("solutionSet.xml"));
            XMLOutputter outputter = new XMLOutputter("  ", true);
            outputter.output(document,fileOutputStream);
            fileOutputStream.close();
Pagina: 1