Toon posts:

[XML] Selectie uit vaststaand XML-bestand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem waar ik ondanks verregaand zoekwerk op google en GOT niet uit geraak. Ik heb een XML-bestand dat niet mag gewijzigd worden, en dat er als volgt uitziet :

code:
1
2
3
4
5
<?xml version="1.0" standalone="yes"?>
<trial-form-application xsi:schemaLocation="http://eudract.ClinicalTrialApplication.xsd http://eudract.ClinicalTrialApplication.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://eudract.ClinicalTrialApplication.xsd">
    <trial-identification>
        <eudract-number>2005-000001-12</eudract-number>
        <full-title-trial>Hier staat de titel</full-title-trial>


Nu zoek ik een manier om een HTML bestandje te maken waar bvb het Eudract-number en de full titel na elkaar staan. Veel zoekwerk en gepruts met XSL brengen me niet veel verder : ik slaag er alleen in een selectie te maken als ik de originele XML wijzig... en dat ik de bedoeling niet. Bovendien zou dit enigzins automatisch moeten gaan (dus : klikken op de XML geeft als resultaat HTML met gegevens...)

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 03-04 10:15
je kan dit inderdaad via xslt omvormen naar html. Via xpath kan je selecties maken op je xml bestand.

deze bewerkingen wijzigen niets aan het originele xml formaat... dus van waar je dat haalt weet ik niet...

misschien eens kijken op www.w3schools.com

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • cenix
  • Registratie: September 2001
  • Laatst online: 14-04 19:25
Laat eens een deel van je XLS-T zien?

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  
<xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="Eudract-number">
    <p><xsl:apply-templates/></p>
  </xsl:template>

<xsl:output method="html" indent="yes"/>
 </xsl:stylesheet>


Hieruit verwacht ik dus na het parsen een html bestand met enkel het Eudract nummer, maar in de plaats krijg ik alle info in de XML file.

  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 03-04 10:15
het zou misschien al helpen als je je html juist opbouwt: beginnen met <html> en een <body> tag waar je content in komt

"Live as if you were to die tomorrow. Learn as if you were to live forever"


Verwijderd

Cuball schreef op dinsdag 24 januari 2006 @ 15:26:
het zou misschien al helpen als je je html juist opbouwt: beginnen met <html> en een <body> tag waar je content in komt
Beiden zijn niet verplicht voor valide html hoor :)

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:30

TeeDee

CQB 241

Probeer eens:
code:
1
2
3
4
5
6
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
    <p><xsl:value-of select="eudract-number" /></p>
</xsl:template>
</xsl:stylesheet>
als xsl file?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

...

[ Voor 98% gewijzigd door Verwijderd op 29-05-2018 17:07 ]


  • cenix
  • Registratie: September 2001
  • Laatst online: 14-04 19:25
Je vraagt direct je eudract-number op die child is van trian-identification die op zijn beurt weer child is van (root) trial-form-application.

De oplossing van shad0w_crash lijkt me in orde.

Verwijderd

Topicstarter
Ik heb ten treure geprobeerd om met de volgende XSL de boel werkbaar te krijgen :
code:
1
2
3
4
5
6
7
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<p>TEST</P>
<p><xsl:value-of select="trial-form-application/trial-identification/eudract-number" /></p>
</xsl:template>
</xsl:stylesheet>


Het enige wat ik als resultaat krijg, is een HTML bestand met "TEST", maar zonder gegevens. Of, met andere woorden : het werkt nog steeds niet.

Verwijderd

...

[ Voor 97% gewijzigd door Verwijderd op 29-05-2018 17:07 ]


Verwijderd

Topicstarter
Nee hoor, dat heb ik ook allemaal al geprobeerd.

Ik post hierbij nog eens de volledige XML :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="UTF-8"?>
<trial-form-application xmlns="http://eudract.ClinicalTrialApplication.xsd" xmlns:xsi="http://eudract.ClinicalTrialApplication.xsd" xsi:schemaLocation="
                http://eudract.ClinicalTrialApplication.xsd http://eudract.ClinicalTrialApplication.xsd
                ">
<trial-identification>
<eudract-number>2006-000510-20</eudract-number>
<full-title-trial>Test !</full-title-trial>
<sponsor-protocol-number>123/test</sponsor-protocol-number>
<sponsor-protocol-version/>
<sponsor-protocol-version-date/>
<abbreviated-title-trial/>
<ISRCTN-number/>
<submission-member-state>BE</submission-member-state>
<submission-organisation-id>24</submission-organisation-id>
</trial-identification>
<applicant-identification/>
<sponsor-information/>
<medicinal-products/>
<authorised-sites/>
<placebo-information/>
<general-information>
<ICD10-classification-code/>
</general-information>
<population-of-trial-subjects>
<post-trial-treatment-details/>
</population-of-trial-subjects>
<committe-decision-information/>
<xml-node-information>
<xml-node node-id="0" node-prefix="SP"/>
<xml-node node-id="0" node-prefix="PR"/>
<xml-node node-id="0" node-prefix="AS"/>
<xml-node node-id="0" node-prefix="RS"/>
<xml-node node-id="0" node-prefix="IN"/>
<xml-node node-id="0" node-prefix="CTF"/>
<xml-node node-id="0" node-prefix="TMF"/>
<xml-node node-id="0" node-prefix="PL"/>
</xml-node-information>
</trial-form-application>


Misschien zie ik nog iets over het hoofd, maar ik ploeg al dagen alles rond XML en XSL uit, maar ben er nog niet in geslaagd een selectie te maken zonder de XML te wijzigen.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:30

TeeDee

CQB 241

Verwijderd schreef op woensdag 25 januari 2006 @ 16:00:
Nee hoor, dat heb ik ook allemaal al geprobeerd.

Misschien zie ik nog iets over het hoofd, maar ik ploeg al dagen alles rond XML en XSL uit, maar ben er nog niet in geslaagd een selectie te maken zonder de XML te wijzigen.
Dan heb je niet goed genoeg geprobeerd.

Deze code:
code:
1
2
3
4
5
6
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
        <p><xsl:value-of select="trial-form-application/trial-identification/eudract-number" /></p>
    </xsl:template>
</xsl:stylesheet>
geeft mij als output:
code:
1
<p><p>2006-000510-20</p>

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
hmm, misschien ligt het dan aan de manier waarop ik het laat omzetten, gebruik Xalan... Hoe heb je de omzetting gedaan ?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:30

TeeDee

CQB 241

Ik heb jouw xml opgeslagen, bovenstaande xsl gebruikt, en een simpel vbscriptje in de vorm van:

code:
1
2
3
4
5
6
7
8
9
10
11
12
    styleFile = Server.MapPath("tmp.xsl")
    set xmlsource = Server.CreateObject("Microsoft.XMLDOM")
        xmlsource.async = false
        xmlsource.load(Server.MapPath("tmp.xml"))
    set xmlstyle = Server.CreateObject("Microsoft.XMLDOM")
        xmlstyle.async = false
        xmlstyle.load(stylefile) 
    
    dim xmlString
        xmlString = xmlsource.transformNode(xmlstyle) 
    
    response.write xmlString

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Ik denk dat het een namespace probleem is.
Je node "trial-identification" bijvoorbeeld, heet vermoedelijk niet "trial-identification".
Je gebruikt in je XML document namelijk een (default) namespace "eudract.ClinicalTrialApplication.xsd"

Verwijderd

By the way, TeeDee gebruikt de verkeerde/oude XSL namespace (http://www.w3.org/TR/WD-xsl), daarom werkt zijn stylesheet ondanks de namespace fout.

Een voorbeeld van een goede stylesheet:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:blah="http://eudract.ClinicalTrialApplication.xsd">
<xsl:template match="/">
<xsl:value-of select="/blah:trial-form-application/blah:trial-identification/blah:eudract-number" />
</xsl:template>
</xsl:stylesheet>

Dit werkt, en dit is de goede XSL namespace.
Let op de blah-prefix.

Namespaces zijn je vriend!

[ Voor 30% gewijzigd door Verwijderd op 26-01-2006 14:37 ]


Verwijderd

Topicstarter
Het laatste stukje code werkt perfect. Met dank aan iedereen voor de hulp !
Pagina: 1