Toon posts:

[XML/XSL] samen voegen van 2 db queries

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een XML file welke ik aanmaak via ASP dmv de AdpersistXML, deze gegeneert netjes een XML file van 1 database query.

Nu heb ik het volgende probleem :Ik heb 2 gerelateerde tabellen, waarvan ik 1 record uit de ene wil en vele (gerelateerde) records uit de andere.

Hoe kan ik deze het beste combineren ? Kom ik dan uit op 2 XML files welke ik zal moeten combineren via een XSL:variable, of kan dit direct als 1 XML gegenereerd worden ?

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Gewoon een JOIN in je query gebruiken en dan 1 xml file genereren lijkt mij het beste
(ligt er natuurlijk wel aan of en hoe de gegevens in beide tabellen gerelateerd zijn)

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
P_de_B schreef op 30 januari 2004 @ 14:17:
Gewoon een JOIN in je query gebruiken en dan 1 xml file genereren lijkt mij het beste
(ligt er natuurlijk wel aan of en hoe de gegevens in beide tabellen gerelateerd zijn)
Ja dat lijkt voordehand liggend maar ....

tabel 1

- procedure
- title
- introduction
- etc.

tabel 2
- stappen (die bij de procedure horen)

Een join levert wel de procedure,title,introduction en alle stappen op, maar bij elk record (stap) worden de procedure,title,introduction iedere keer genoemd en die wil ik er juist maar 1 keer in hebben..

[ Voor 3% gewijzigd door Verwijderd op 30-01-2004 14:29 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Welke database gebruik je? Indien je SQL Server 2000 gebruikt kun je de FOR XML clause gebruiken

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
P_de_B schreef op 30 januari 2004 @ 14:31:
Welke database gebruik je? Indien je SQL Server 2000 gebruikt kun je de FOR XML clause gebruiken
Dit doe ik met MSAcces :X

Verwijderd

Verwijderd schreef op 30 januari 2004 @ 14:28:
[...]

Ja dat lijkt voordehand liggend maar ....

tabel 1

- procedure
- title
- introduction
- etc.

tabel 2
- stappen (die bij de procedure horen)

Een join levert wel de procedure,title,introduction en alle stappen op, maar bij elk record (stap) worden de procedure,title,introduction iedere keer genoemd en die wil ik er juist maar 1 keer in hebben..
Wat je kan doen is met een script door de recordset loopen die de SQL voortbrengt en daarmee de XML nodes construeren.

<procdure title="bla">
<stap id="1" />
<stap id="2" />
</procedure>

Denk niet dat er een andere mooie oplossing is. Het is of dit of dan veel dubbele data in je XML string.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

In principe kan je ook de output van beide queries naar XML doen en dan een XSLT-sheet over die XML heenhalen om het gewenste resultaat te bereiken.

Rustacean


Verwijderd

Topicstarter
Manuzhai schreef op 30 januari 2004 @ 16:22:
In principe kan je ook de output van beide queries naar XML doen en dan een XSLT-sheet over die XML heenhalen om het gewenste resultaat te bereiken.
En hoe doe ik dan beide queries naar 1 XML file ? Ik zie -NW's oplossing nu namelijk ook als enige oplossing :/

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Hmnjah, hangt er vanaf. Je zou die bestandjes gewoon min of meer samen kunnen voegen ofzo (met nog een root-element erbij)?

Rustacean


Verwijderd

ehm, je hebt dus 2 queries die elk een XML geven, en je wil een transformatie doen van die 2 gezamenlijk?
http://www.nwalsh.com/docs/tutorials/xsl/xsl/slides.html
>>>
Slide 66: Multiple Documents

A stylesheet can load additional documents with the document() function. In the following example, we recast the sorted table example using several features we have learned:

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:import href="element.xsl"/>

<xsl:variable name="tabledoc">sorttable.xml</xsl:variable>

<xsl:template match="insert-table">
<xsl:if test="@id"><a name="{@id}"/></xsl:if>
<xsl:apply-templates select="document($tabledoc)"/>
</xsl:template>

<xsl:template match="table">
<table>
<xsl:apply-templates select="row">
<xsl:sort data-type="number" select="./cell[1]"/>
</xsl:apply-templates>
</table>
</xsl:template>

</xsl:stylesheet>


&&

Slide 86: XSLT Functions

XSLT extends the set of available functions with these:

node-set document(object, node-set?)

Allows XSLT to access the nodes in another document


ik hoop dat je er iets aan hebt
Pagina: 1