🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: nl.comp.programmeren
11 messages
11 total messages Started by flor Wed, 27 Feb 2008 16:09
xml naar xml transformeren
#51
Author: flor
Date: Wed, 27 Feb 2008 16:09
57 lines
2757 bytes
Hallo,

Ik probeer om een xml bestand om te zetten in een anders gevormd xml 
bestand.
Dit schijnt relatief makkelijk te kunnen met xsl transformatie.
Ik raak er echter maar niet uit.
Het input bestand is als volgt gevormd:

> <B T="D" N="Result">
>    <B T="T" N="Subject">
>       <B T="R">
>          <B T="C" N="FirstName" V="voornaam"/>
>          <B T="C" N="LastName" V="achternaam"/>
>          <B T="C" N="BirthDate" V="1972-12-22 00:00:00"/>
>          <B T="C" N="PersonalID" V="123"/>
>       </B>
>    </B>
> </B>

Nu wil ik dit omvormen naar iets als:

> <Subject>
> <Name>
>    <FirstName>voornaam</FirstName>
>    <LastName>achternaam</LastName>
> </Name>
> <DateOfBirth>22/12/1972</DateOfBirth>
> <ID>123</ID>
> </Subject>

hoe moet dit?
Ik heb al zitten knoeien met de volgende xsl template, maar zonder succes:
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>   version="1.0" xmlns:xalan="http://xml.apache.org/xslt"
>   xmlns:input="cross-field-validation-namespace">
> 
>   <xsl:template match="/E">
>     <E>
>         <xsl:apply-templates select="E/*[@T = 'first_name']" />
>     </E>
>   </xsl:template>
> 
>   <xsl:template match="E">
>     <Subject>
>       <Name>
>         <xsl:value-of select="E/*[@T = 'FirstName']" />
> 		<xsl:value-of select="E/*[@T = 'LastName']" />
>       </Name>
>       <DateOfBirth>
>         <xsl:value-of select="E/*[@N = 'BirthDate']" />
>       </DateOfBirth>
>     </Subject>
>   </xsl:template>
> 
> </xsl:stylesheet>

hulp iemand?
Re: xml naar xml transformeren
#52
Author: robert
Date: Wed, 27 Feb 2008 17:55
33 lines
1892 bytes
flor <flor@no.spam.invalid>:
> Hallo,
>
> Ik probeer om een xml bestand om te zetten in een anders gevormd xml
> bestand.
> Dit schijnt relatief makkelijk te kunnen met xsl transformatie.
> Ik raak er echter maar niet uit.

Weinig sanitychecking erin, maar wellicht zoiets:

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

<xsl:template match="*[@N = 'Subject']">
	<Results>
		<xsl:apply-templates/>
	</Results>
</xsl:template>

<xsl:template match="*[@T = 'R']">
	<Subject>
		<Name>
			<FirstName><xsl:value-of select="*[@N = 'FirstName']/@V"/></FirstName>
			<LastName><xsl:value-of select="*[@N = 'LastName']/@V"/></LastName>
		</Name>
		<DateOfBirth><xsl:value-of select="*[@N = 'BirthDate']/@V"/></DateOfBirth>
		<ID><xsl:value-of select="*[@N = 'PersonalID']/@V"/></ID>
	</Subject>
</xsl:template>

</xsl:stylesheet>

-- 
                                                                         robert
Re: xml naar xml transformeren
#53
Author: flor
Date: Thu, 28 Feb 2008 08:13
20 lines
1957 bytes
robert wrote:
> flor <flor@no.spam.invalid>:
>> Hallo,
>>
>> Ik probeer om een xml bestand om te zetten in een anders gevormd xml
>> bestand.
>> Dit schijnt relatief makkelijk te kunnen met xsl transformatie.
>> Ik raak er echter maar niet uit.
> 
> Weinig sanitychecking erin, maar wellicht zoiets:
> 
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
> 
> <xsl:template match="*[@N = 'Subject']">
> 	<Results>
> 		<xsl:apply-templates/>
> 	</Results>

bedankt, maar het werkt niet, de waardes worden niet in de output gezet.
<Results> komt niet voor in de input file, kan daar het probleem liggen?
Re: xml naar xml transformeren
#54
Author: Suzan Foster
Date: Thu, 28 Feb 2008 09:51
86 lines
3395 bytes
flor schreef:
> Hallo,
>
> Ik probeer om een xml bestand om te zetten in een anders gevormd xml 
> bestand.
> Dit schijnt relatief makkelijk te kunnen met xsl transformatie.
> Ik raak er echter maar niet uit.
> Het input bestand is als volgt gevormd:
>
>> <B T="D" N="Result">
>>    <B T="T" N="Subject">
>>       <B T="R">
>>          <B T="C" N="FirstName" V="voornaam"/>
>>          <B T="C" N="LastName" V="achternaam"/>
>>          <B T="C" N="BirthDate" V="1972-12-22 00:00:00"/>
>>          <B T="C" N="PersonalID" V="123"/>
>>       </B>
>>    </B>
>> </B>
>
> Nu wil ik dit omvormen naar iets als:
>
>> <Subject>
>> <Name>
>>    <FirstName>voornaam</FirstName>
>>    <LastName>achternaam</LastName>
>> </Name>
>> <DateOfBirth>22/12/1972</DateOfBirth>
>> <ID>123</ID>
>> </Subject>
>
> hoe moet dit?
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    
    <xsl:strip-space elements="B"/>
    
  <xsl:template match="B">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="B[@N='Subject']">
    <Subject>
        <Name>
            <xsl:apply-templates select="//B[@N='FirstName']"/>
            <xsl:apply-templates select="//B[@N='LastName']"/>
        </Name>
        <xsl:apply-templates select="//B[@N='BirthDate']"/>
        <xsl:apply-templates select="//B[@N='PersonalID']"/>
    </Subject>
  </xsl:template>

  <xsl:template match="B[@N='FirstName']">
    <FirstName>
        <xsl:value-of select="@V"/>
    </FirstName>
  </xsl:template>

  <xsl:template match="B[@N='LastName']">
    <LastName>
        <xsl:value-of select="@V"/>
    </LastName>
  </xsl:template>

  <xsl:template match="B[@N='BirthDate']">
    <xsl:param name="date" select="substring-before(@V, ' ')"/>
    <xsl:param name="year" select="substring-before($date, '-')"/>
    <xsl:param name="month-and-day" select="substring-after($date, '-')"/>
    <xsl:param name="month" select="substring-before($month-and-day, '-')"/>
    <xsl:param name="day" select="substring-before($month-and-day, '-')"/>
    <DateOfBirth>
        <xsl:value-of select="concat($day, '/', $month, '/', $year)"/>
    </DateOfBirth>
  </xsl:template>

  <xsl:template match="B[@N='PersonalID']">
    <ID>
        <xsl:value-of select="@V"/>
    </ID>
  </xsl:template>
</xsl:stylesheet>

Ietsa siempel :oP

Groeten, su.
Re: xml naar xml transformeren
#55
Author: Suzan Foster
Date: Thu, 28 Feb 2008 09:59
17 lines
1539 bytes
Een verbetering op mijn eigen voorbeeld, de selects zijn een beetje te 
gulzig voor deze template:

...
  <xsl:template match="B[@N='Subject']">
    <Subject>
        <Name>
            <xsl:apply-templates select=".//B[@N='FirstName']"/>
            <xsl:apply-templates select=".//B[@N='LastName']"/>
        </Name>
        <xsl:apply-templates select=".//B[@N='BirthDate']"/>
        <xsl:apply-templates select=".//B[@N='PersonalID']"/>
    </Subject>
  </xsl:template>
...

Groeten, Su.
Re: xml naar xml transformeren
#56
Author: Suzan Foster
Date: Thu, 28 Feb 2008 10:03
19 lines
1646 bytes
Suzan Foster schreef:

Darn, ik blijf mezelf verbeteren..

...
  <xsl:template match="B[@N='BirthDate']">
    <xsl:param name="date" select="substring-before(@V, ' ')"/>
    <xsl:param name="year" select="substring-before($date, '-')"/>
    <xsl:param name="month-and-day" select="substring-after($date, '-')"/>
    <xsl:param name="month" select="substring-before($month-and-day, '-')"/>
    <xsl:param name="day" select="substring-after($month-and-day, '-')"/>
    <DateOfBirth>
        <xsl:value-of select="concat($day, '/', $month, '/', $year)"/>
    </DateOfBirth>
  </xsl:template>
...


Groeten, Su.
Re: xml naar xml transformeren
#57
Author: robert
Date: Thu, 28 Feb 2008 10:43
28 lines
1959 bytes
flor <flor@no.spam.invalid>:
> robert wrote:
>> flor <flor@no.spam.invalid>:
>>> Hallo,
>>>
>>> Ik probeer om een xml bestand om te zetten in een anders gevormd xml
>>> bestand.
>>> Dit schijnt relatief makkelijk te kunnen met xsl transformatie.
>>> Ik raak er echter maar niet uit.
>>
>> Weinig sanitychecking erin, maar wellicht zoiets:
>>
>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
>>
>> <xsl:template match="*[@N = 'Subject']">
>> 	<Results>
>> 		<xsl:apply-templates/>
>> 	</Results>
>
> bedankt, maar het werkt niet, de waardes worden niet in de output gezet.
> <Results> komt niet voor in de input file, kan daar het probleem liggen?

Nee, want <Results> is een output-element. Maar je voorbeeldcode en je
voorbeelden van in- en uitvoer waren niet erg consistent, vandaar dat ik
een aantal dingen maar even gegokt heb :)

-- 
                                                                    robert
Re: xml naar xml transformeren
#58
Author: flor
Date: Fri, 29 Feb 2008 20:50
23 lines
2087 bytes
Suzan Foster wrote:
> Suzan Foster schreef:
> 
> Darn, ik blijf mezelf verbeteren..
> 
> ...
>  <xsl:template match="B[@N='BirthDate']">
>    <xsl:param name="date" select="substring-before(@V, ' ')"/>
>    <xsl:param name="year" select="substring-before($date, '-')"/>
>    <xsl:param name="month-and-day" select="substring-after($date, '-')"/>
>    <xsl:param name="month" select="substring-before($month-and-day, '-')"/>
>    <xsl:param name="day" select="substring-after($month-and-day, '-')"/>
>    <DateOfBirth>
>        <xsl:value-of select="concat($day, '/', $month, '/', $year)"/>
>    </DateOfBirth>
>  </xsl:template>
> ...
> 
> 
> Groeten, Su.

heel heel heel heel heel hartelijk bedankt!
werkt als een klok!
Re: xml naar xml transformeren
#59
Author: flor
Date: Fri, 29 Feb 2008 21:03
31 lines
2324 bytes
flor wrote:
> Suzan Foster wrote:
>> Suzan Foster schreef:
>>
>> Darn, ik blijf mezelf verbeteren..
>>
>> ...
>>  <xsl:template match="B[@N='BirthDate']">
>>    <xsl:param name="date" select="substring-before(@V, ' ')"/>
>>    <xsl:param name="year" select="substring-before($date, '-')"/>
>>    <xsl:param name="month-and-day" select="substring-after($date, '-')"/>
>>    <xsl:param name="month" select="substring-before($month-and-day, 
>> '-')"/>
>>    <xsl:param name="day" select="substring-after($month-and-day, '-')"/>
>>    <DateOfBirth>
>>        <xsl:value-of select="concat($day, '/', $month, '/', $year)"/>
>>    </DateOfBirth>
>>  </xsl:template>
>> ...
>>
>>
>> Groeten, Su.
> 
> heel heel heel heel heel hartelijk bedankt!
> werkt als een klok!

oei! te vroeg victorie gekraaid...
:(
blijkbaar neemt hij de tags niet allemaal over
het resultaat bevat niet de tags <Subject> en <Name>
hoe kan dat?
Re: xml naar xml transformeren
#60
Author: flor
Date: Fri, 29 Feb 2008 21:16
36 lines
2382 bytes
flor wrote:
> flor wrote:
>> Suzan Foster wrote:
>>> Suzan Foster schreef:
>>>
>>> Darn, ik blijf mezelf verbeteren..
>>>
>>> ...
>>>  <xsl:template match="B[@N='BirthDate']">
>>>    <xsl:param name="date" select="substring-before(@V, ' ')"/>
>>>    <xsl:param name="year" select="substring-before($date, '-')"/>
>>>    <xsl:param name="month-and-day" select="substring-after($date, 
>>> '-')"/>
>>>    <xsl:param name="month" select="substring-before($month-and-day, 
>>> '-')"/>
>>>    <xsl:param name="day" select="substring-after($month-and-day, '-')"/>
>>>    <DateOfBirth>
>>>        <xsl:value-of select="concat($day, '/', $month, '/', $year)"/>
>>>    </DateOfBirth>
>>>  </xsl:template>
>>> ...
>>>
>>>
>>> Groeten, Su.
>>
>> heel heel heel heel heel hartelijk bedankt!
>> werkt als een klok!
> 
> oei! te vroeg victorie gekraaid...
> :(
> blijkbaar neemt hij de tags niet allemaal over
> het resultaat bevat niet de tags <Subject> en <Name>
> hoe kan dat?

opgelost, foutje gemaakt bij kopieren.
bedankt nogmaals!
Re: xml naar xml transformeren
#61
Author: clri 0
Date: Thu, 06 Mar 2008 03:39
8 lines
1564 bytes
Wat leuk dat u ons op de hoogte houdt van je festiviteiten!



>> hoe kan dat?
>
> opgelost, foutje gemaakt bij kopieren.
> bedankt nogmaals! 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads