XML sehen am Lesbarsten in...
[html]<div>Tagchen, Planet</div>[/html]
...Tags aus.
Das "Grundgerüst", was die XSLT braucht die eine Cisco Telefonbuch XML bauen soll, ist demnach...
HTML:
<CiscoIPPhoneDirectory>
<Title></Title>
<Prompt></Prompt>
<DirectoryEntry>
<Name></Name>
<Telephone></Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>
Oups, schon so spät, ich mach morgen weiter
...
Sontag mach ich Blau
...
So...
Die XSLT hab ich mal CiscoIPPhoneDirectory.xsl genannt...
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<CiscoIPPhoneDirectory>
<Title><xsl:value-of select="/phonebooks/phonebook/@name"/></Title>
<Prompt>Select the User</Prompt>
<xsl:for-each select="/phonebooks/phonebook/contact">
<DirectoryEntry>
<Name><xsl:value-of select="person/realName" /></Name>
<Telephone><xsl:value-of select="telephony/number" /></Telephone>
</DirectoryEntry>
</xsl:for-each>
</CiscoIPPhoneDirectory>
</xsl:template>
</xsl:stylesheet>
Das Original XML des exportierten FRITZ!Box Telefonbuchs benötigt dann noch die Angabe des "Stylesheets"...
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="CiscoIPPhoneDirectory.xsl" ?>
<phonebooks>
<!-- id:1 , name: Testbuch -->
<phonebook owner="1" name="Testbuch">
Wird diese XML im Browser aufgerufen ( Bei mir liegt es auf einen lokalen Apache Webserver im Doc-Root-Verzeichnis ), führt das zu...
( Ansicht: Rechte Maustaste und: Untersuchen (Entwickler Tool) )
...im Webbrowser.
Anmerkung
Die Transformation ist gelungen, das siehste aber nur in dem Entwickler Tool.
Momentan weigert sich Chrome ( FireFox auch ), die XML nicht als HTML anzuzeigen.
...muss mal sehen weshalb das verhindert wird
Webbrowser hab ich bis jetzt nicht dazu bekommen die Transformation nach XML anzeigen zu lassen.
...aber egal, unter Linux gibts auch dafür ein Tool: xsltproc
Also mal kurz ein beherztes...
Code:
xsltproc CiscoIPPhoneDirectory.xsl fritzboxtelefonbuch.xml > cisco_directory.xml
( Hierfür benötigt die fritzboxtelefonbuch.xml das
<?xml-stylesheet type="text/xsl" href="CiscoIPPhoneDirectory.xsl" ?>
nicht )
...und...
cisco_directory.xml
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<CiscoIPPhoneDirectory>
<Title>Testbuch</Title>
<Prompt/>
<DirectoryEntry>
<Name>Alarmanlage</Name>
<Telephone>**6211</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Alle (Rundruf)</Name>
<Telephone>**9</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Anrufbeantworter 1</Name>
<Telephone>**600</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Anrufbeantworter 2</Name>
<Telephone>**601</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Anrufbeantworter 3</Name>
<Telephone>**602</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Anrufbeantworter 4</Name>
<Telephone>**603</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Anrufbeantworter 5</Name>
<Telephone>**604</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>FRITZ!App Fon (Ulefone Note_7P)</Name>
<Telephone>**620</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>ISDN-Telefonanlage</Name>
<Telephone>**51</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>ISDN/DECT Rundruf</Name>
<Telephone>**50</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>koyaanisqatsi</Name>
<Telephone>**621</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Niemand Keiner</Name>
<Telephone/>
</DirectoryEntry>
<DirectoryEntry>
<Name>Wecker 1</Name>
<Telephone>**41</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Wecker 2</Name>
<Telephone>**42</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Wecker 3</Name>
<Telephone>**43</Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>
...die XSLT transformiert das F!B-Telefonbuch sauber nach Cisco-XML
Browser Screenshoot...
Na gut, in <prompt/> muss noch was rein, aber das kann direkt in der XSLT stehen
( <prompt/> in XSLT korrigiert )