2005 versie van de CD-Foongids (3)


#1

[quote]Dankzij C-Content is het product gebaseerd is op de nieuwste technologie, zoals XML. Dit heeft volgens Thomas Snyder in sterke mate bijgedragen aan de hogere kwaliteit en stabiliteit van het product.

http://www.telecomwereld.nl/n0000114.htm][i]Bij de introductie van de CD-foongids 2005/2006[/i
[/quote]
XML? Een gewone gebruiker zal daar niet zoveel van merken. Het zoekprogramma heeft een HTML-achtige bijsmaak en dat klopt ook, een deel van de zoekresultaten wordt in een mini-browser getoond. Het uiterlijk daarvan wordt bepaald in een zogeheten ‘stylesheet’, in dit geval details.xsl dat bij een standaardinstallatie in de map “…\De Telefoongids\CD-foongids\App\xml\style” te vinden is:

[code]’ XSL
’ begin details.xsl CD-foongids

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:cc="http://www.c-content.nl/namespaces/cc"
version=“1.0”>
enz…
[/code]
XSL? Niet gek, dan zou een gebruiker die de weg weet de interface naar eigen smaak kunnen aanpassen. Kijken of dat werkt… taartje. Katja hier ook tussen zetten? Kan, maar dan haal je niet alles uit zo’n stylesheet wat erin zit. Weet dit: de “transformator” die bij de CD-foongids zit is van Microsoft. Weet ook dat die een ‘msxsl:script’-extension aan haar product meegegeven heeft. Met andere woorden, je kan met (java- of vb-)script van eigen hand de werking van iedere willekeurige stylesheet “opvoeren” en dus ook die van het genoemde bestand “details.xsl”. Meer in het bijzonder, die code heeft ook toegang - essentie van een XML/XSL interactie - tot de gegevens die op dat bewuste moment voorbij komen. Een aantrekkelijke gedachte… Zou men op die manier bijv. het menu “Gegevens opslaan en exporteren” van de CD-foongids misschien wel van een extra optie kunnen voorzien? Daar ziet het wel naar uit want na wat trek- en duwwerk kon met de volgende vereenvoudigde versie van details.xsl:

[code]’ XSL
’code voor details.xsl

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:function=“http://company.com/functions”>

<msxsl:script language="VBScript" implements-prefix="function">
<![CDATA[
Function doprint(node)
    With CreateObject("Scripting.FileSystemObject")
        With .OpenTextFile("C:\Test\nawt.xml", 8, -1)
          .WriteLine node(0).xml
          .Close
        End With
    End With
    doprint = node(0).xml
End Function
]]>
</msxsl:script>

<xsl:output method="text"/>

<xsl:template match="/">
    <xsl:copy-of select="function:doprint(node() | @*)"/>
</xsl:template>

</xsl:stylesheet>[/code]
de hierna getoonde complete blauwdruk van het detailvenster teruggewonnen worden:

[code]’ XML
’ resultaat zoekactie

white true owiyAplmxwRpQp51i1M3 0900 0500 Telefoongids BV De Delflandlaan 15 1062EA Amsterdam TMN GV 14276367 bijzonder gesprekstarief [/code]

compleet want in XML en die ook nog eens keurig ververst wordt steeds wanneer je met de pijltoetsen door de getoonde lijst met zoekresultaten loopt. Met eigen code - hier Visual Basic - in een externe “DLL” wordt het nog iets makkelijker om een en ander in goede banen te leiden:

[code]’ VB CLS

Private xmlfn As String

Public Function SaveXML(xml As String) As Boolean
With New FileSystemObject
With .OpenTextFile(xmlfn, 8, -1)
.WriteLine xml
.Close
End With
End With
SaveXML = True
End Function

Public Property Let FileName(fn)
xmlfn = fn
End Property[/code]
Op dat moment kan je ook maatregelen gaan nemen om bijv. te voorkomen dat je een item nog een keer opslaat als je de muis per ongeluk een tweede keer op dezelfde regel zet. Denkbaar is ook: na het opslaan van een regel verplaatst de programmacode de ‘focus’ naar de volgende regel met bijv. “PostMessage hWnd, WM_KEYDOWN, VK_DOWN, …” waarna ook die regel weer in het externe bestand gezet wordt (hier als XML) enz. totdat de laatste regel bereikt is. Bij rubrieken in heel Nederland of zoeken op “BV” in alle provincies passeer je dan wel onmiddellijk de toegestane 150-stuks-export-limiet.

Het script in jouw details.xsl maar nu aangepast voor het inzetten van genoemde “buitenboord-DLL”:

[code]’ XSL
’ alternatief script met call naar aparte dll

<msxsl:script language=“VBScript” implements-prefix=“function”>

</msxsl:script>


[/code]
De omringende XSL-instructies blijven zoals ze waren.

Tip: XTrans


van SimX, ‘open source’-gevalletje om aan zo’n XSL-‘stylesheet’ te prutsen en daarna het effect daarvan op de XML-data te controleren.

(-/-)


#2

Je reply stond in die TravelManager-component-thread dus maar even voor de zekerheid: “op deze manier” kom je niet “ook” bij de telefoonnummers uit. Dat ding heet Travel…enz. en daar istie ook voor bedoeld:
http://en.wikipedia.org/wiki/Gis#GeoCoding][b]geocoding[/b
van de adressen- en postcodevermeldingen die elders op de CD staan.

Geen doorgewinterde IT-er? Dan ben je afhankelijk van iemand anders die eerst moet kijken hoe het zit en dan een kant-en-klaar computerprogramma schrijft waarmee jij op jouw beurt al-dan-niet comfortabel de nieuwste CD-foongids weer kan gaan afschuimen, misschien wel maar misschien ook niet op dezelfde manier zoals dat tot nu toe met Foondump werkte.

Zonder die nieuwe software kan je wel al met de 2005-CD experimenteren, bijvoorbeeld met wat simpele ingrepen op kleine of wat grotere schaal vermeldingen exporteren. Dat gaat als volgt:

    - ga naar CD-foon-submap xml\style en zoek naar het bestand details.xsl
    • geef de originele details.xsl zolang een andere naam
    • kopieer de eerder geposte xsl-code gelabeld: “vereenvoudigde versie van details.xsl”
    • plak deze geprepareerde code die het origineel gaat vervangen in Notepad/Kladblok
    • wis de eerste drie regels, de eerste regel is nu: <xsl:stylesheet version=“1.0”
    • save dat in dezelfde map weer als details.xsl
    • start de CD-foongids 2005/2006 (opnieuw)
    • zoek op de gewenste term en loop met de pijl-naar-beneden-toets door de gevonden resultaten
    • herhaal dit als je in ‘wit’ zoekt zonodig voor andere of alle 12 provincies
    Dit alles moet een nieuw bestand opleveren in de map waar details.xsl ook in staat. Had je verder niets veranderd dan heet dit nieuwe bestand nawt.xml, waarin nawt staat voor (n)aam, (a)dres, (w)oonplaats en (t)elefoon.

Dat XML-bestand kan je ook weer met Notepad openen om te kijken wat erin staat: dit zijn alle vermeldingen waar je net langs gekomen bent. Verpakt in de veldnamen zoals dat bij XML de bedoeling is.

Als je nieuwsgierig bent aangelegd kan je met het bovengenoemde gratis XTrans proberen de verkregen XML te ‘transformeren’. Als beginnetje hier een tweede ‘stylesheet’ om een leesbare lijst namen met jouw nick “et” uit de daarvoor opgehaalde XML te halen:

[code]<xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version=“1.0”>
<xsl:output method=“text”/>
<xsl:template match="/">
<xsl:apply-templates select="//basiclisting/display_name"/>
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="."/>
xsl:text& #13;& #10;</xsl:text>
</xsl:template>
</xsl:stylesheet>

NB. vanwege de beperkingen in de forumsoftware krijg ik het niet correct gequoted
heb daarom maar spaties tussen de & en # gezet maar die horen daar niet!
[/code]
Output:

    Arti et Amicitiae Maatschappij
    Blanc et Blanche
    Caffe et Panini Esclusivi
    Carpe Diem et Bora
    Cazebonne Vacances et Vin
    Chaput Schoonheidssalon Elle et Lui
    Consulaat de Sao Tomé et Principe auz Pays-Bas
    Contre Vents et Marées
    Day Birger et Mikkelsen
    Délifrance Boulangerie et Café Francais
    […]

#3

Aanvulling: zag te laat dat het pad voor dat nieuwe bestand “nawt.xml” in de code naar “C:\Test\nawt.xml” gezet is.

Daar komt het dus te staan als je niets doet.

Je kan het eenvoudig veranderen in alleen “nawt.xml” (of iets anders maar bij voorkeur wel met de extensie “.xml”) en dan komen de nieuwe weg te schrijven vermeldingen wel als “nawt.xml” terecht in de map “xml\style” waar ook het genoemde “details.xsl” ook staat.


#4

[quote=“Weerman”][quote]Dankzij C-Content is het product gebaseerd is op de nieuwste technologie, zoals XML. Dit heeft volgens Thomas Snyder in sterke mate bijgedragen aan de hogere kwaliteit en stabiliteit van het product.

http://www.telecomwereld.nl/n0000114.htm][i]Bij de introductie van de CD-foongids 2005/2006[/i
[/quote]
XML? Een gewone gebruiker zal daar niet zoveel van merken. Het zoekprogramma heeft een HTML-achtige bijsmaak en dat klopt ook, een deel van de zoekresultaten wordt in een mini-browser getoond. Het uiterlijk daarvan wordt bepaald in een zogeheten ‘stylesheet’, in dit geval details.xsl dat bij een standaardinstallatie in de map “…\De Telefoongids\CD-foongids\App\xml\style” te vinden is:

[code]’ XSL
’ begin details.xsl CD-foongids

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:cc="http://www.c-content.nl/namespaces/cc"
version=“1.0”>
enz…
[/code]
XSL? Niet gek, dan zou een gebruiker die de weg weet de interface naar eigen smaak kunnen aanpassen. Kijken of dat werkt… taartje. Katja hier ook tussen zetten? Kan, maar dan haal je niet alles uit zo’n stylesheet wat erin zit. Weet dit: de “transformator” die bij de CD-foongids zit is van Microsoft. Weet ook dat die een ‘msxsl:script’-extension aan haar product meegegeven heeft. Met andere woorden, je kan met (java- of vb-)script van eigen hand de werking van iedere willekeurige stylesheet “opvoeren” en dus ook die van het genoemde bestand “details.xsl”. Meer in het bijzonder, die code heeft ook toegang - essentie van een XML/XSL interactie - tot de gegevens die op dat bewuste moment voorbij komen. Een aantrekkelijke gedachte… Zou men op die manier bijv. het menu “Gegevens opslaan en exporteren” van de CD-foongids misschien wel van een extra optie kunnen voorzien? Daar ziet het wel naar uit want na wat trek- en duwwerk kon met de volgende vereenvoudigde versie van details.xsl:

[code]’ XSL
’code voor details.xsl

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:function=“http://company.com/functions”>

<msxsl:script language="VBScript" implements-prefix="function">
<![CDATA[
Function doprint(node)
    With CreateObject("Scripting.FileSystemObject")
        With .OpenTextFile("C:\Test\nawt.xml", 8, -1)
          .WriteLine node(0).xml
          .Close
        End With
    End With
    doprint = node(0).xml
End Function
]]>
</msxsl:script>

<xsl:output method="text"/>

<xsl:template match="/">
    <xsl:copy-of select="function:doprint(node() | @*)"/>
</xsl:template>

</xsl:stylesheet>[/code]
de hierna getoonde complete blauwdruk van het detailvenster teruggewonnen worden:

[code]’ XML
’ resultaat zoekactie

white true owiyAplmxwRpQp51i1M3 0900 0500 Telefoongids BV De Delflandlaan 15 1062EA Amsterdam TMN GV 14276367 bijzonder gesprekstarief [/code]

compleet want in XML en die ook nog eens keurig ververst wordt steeds wanneer je met de pijltoetsen door de getoonde lijst met zoekresultaten loopt. Met eigen code - hier Visual Basic - in een externe “DLL” wordt het nog iets makkelijker om een en ander in goede banen te leiden:

[code]’ VB CLS

Private xmlfn As String

Public Function SaveXML(xml As String) As Boolean
With New FileSystemObject
With .OpenTextFile(xmlfn, 8, -1)
.WriteLine xml
.Close
End With
End With
SaveXML = True
End Function

Public Property Let FileName(fn)
xmlfn = fn
End Property[/code]
Op dat moment kan je ook maatregelen gaan nemen om bijv. te voorkomen dat je een item nog een keer opslaat als je de muis per ongeluk een tweede keer op dezelfde regel zet. Denkbaar is ook: na het opslaan van een regel verplaatst de programmacode de ‘focus’ naar de volgende regel met bijv. “PostMessage hWnd, WM_KEYDOWN, VK_DOWN, …” waarna ook die regel weer in het externe bestand gezet wordt (hier als XML) enz. totdat de laatste regel bereikt is. Bij rubrieken in heel Nederland of zoeken op “BV” in alle provincies passeer je dan wel onmiddellijk de toegestane 150-stuks-export-limiet.

Het script in jouw details.xsl maar nu aangepast voor het inzetten van genoemde “buitenboord-DLL”:

[code]’ XSL
’ alternatief script met call naar aparte dll

<msxsl:script language=“VBScript” implements-prefix=“function”>

</msxsl:script>


[/code]
De omringende XSL-instructies blijven zoals ze waren.

Tip: XTrans


van SimX, ‘open source’-gevalletje om aan zo’n XSL-‘stylesheet’ te prutsen en daarna het effect daarvan op de XML-data te controleren.

(-/-)[/quote]