Ubersicht
14.1: SVG-Dokument
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="150" height="150" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="verlauf" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="blue" />
<stop offset="100%" stop-color="white" />
</linearGradient>
</defs>
<rect x="55" y="20" width="200" height="100" fill="url(#verlauf)" />
</svg>
14.2: Wohlgeformtes XML-Dokument
<?xml version="1.0" encoding="ISO-8859-1"?>
<exercise>
? <metadata>
??? <project>more</project>
??? <book>1</book>
??? <unit>1</unit>
??? <subnumber>3</subnumber>
??? <type_code>lac</type_code>
??? <type>Vocabulary</type>
??? <title>Vocabulary: Numbers</title>
? </metadata>
<environment>
? <mediapath>media/</mediapath>
</environment>
<instructions>
? <english>Listen and click on the correct number.</english>
? <italian>Ascolta e fai clic sul numero giusto.</italian>
</instructions>
<items>
? <item nb="1">
??? <text>one</text>
??? <picfile>one.jpg</picfile>
??? <sound>one.mp3</sound>
? </item>
? <item nb="2">
??? <text>two</text>
??? <picfile>two.jpg</picfile>
??? <sound>two.mp3</sound>
? </item>
</items>
</exercise>
14.3: Gultiges XML-Dokument
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE exercise SYSTEM "http://www.meinserver.net/xml/exercise.dtd">
<exercise>
? <metadata>
??? <project>more</project>
??? <book>1</book>
??? <unit>1</unit>
??? <subnumber>3</subnumber>
??? <type_code>lac</type_code>
??? <type>Vocabulary</type>
??? <title>Vocabulary: Numbers</title>
? </metadata>
<environment>
? <mediapath>media/</mediapath>
</environment>
<instructions>
? <english>Listen and click on the correct number.</english>
? <italian>Ascolta e fai clic sul numero giusto.</italian>
</instructions>
<items>
? <item nb="1">
??? <text>one</text>
??? <picfile>one.jpg</picfile>
??? <sound>one.mp3</sound>
? </item>
? <item nb="2">
??? <text>two</text>
??? <picfile>two.jpg</picfile>
??? <sound>two.mp3</sound>
? </item>
</items>
</exercise>?
14.4: XML-Dokument mit interner DTD
<?xml version="1.0"?>
<!DOCTYPE config [
<!ELEMENT config (entry)+>
<!ELEMENT entry (param, value)>
<!ELEMENT param (#PCDATA)>
<!ELEMENT value (#PCDATA)>
]>
<config>
? <entry>
??? <param>max_save</param>
??? <value>100000</value>
? </entry>
? <entry>
??? <param>max_memory</param>
??? <value>16M</value>
? </entry>
</config>?
14.5: JavaScript mit CDATA
<script type="text/javascript">
<![CDATA[
function is_weekend() {
? var now = new Date();
? var dow = now.getDay();
? if(dow < 1 || dow > 5)
??? return true;
? else
??? return false;
}
]]>
</script>?
14.6: XHTML mit SVG als Dateninsel
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>XHTML mit SVG</title>
</head>
<body>
? <h1>XHTML mit SVG</h1>
? <svg version="1.1" xmlns="http://www.w3.org/2000/svg">
??? <defs>
????? <linearGradient id="verlauf" x1="0%" y1="0%" x2="100%" y2="100%">
??????? <stop offset="0%" stop-color="blue" />
??????? <stop offset="100%" stop-color="white" />
????? </linearGradient>
??? </defs>
??? <rect x="55" y="20" width="200" height="100" fill="url(#verlauf)" />
? </svg>
</body>
</html>?
S.875: Direktes Mischen in XML
<?xml version="1.0" encoding="ISO-8859-1"?>
? <order xmlns:product="http://meinserver.net/urns/product"
???????? xmlns:customer="http://meinserver.net/urns/customer">
? <product:product product:id="p4832" />
??? <product:name>SkyChaser</product:name>
??? <product:date>2006-03-24</product:date>
??? <product:quantities>12</product:quantities>
? </product:product>
? <customer:customer customer:id="c5683" />
??? <customer:name>Johann Friedhof</customer:name>
??? <customer:date>2006-03-24</customer:date>
??? <customer:delivery-address>Kirchhof 6, 99912 Totenstein</customer:deliveryaddress>
? </customer:customer>
</order>?
14.7: Beispiel RSS-Newsfeed-Datei
<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
? <channel>
??? <title>Meine News</title>
??? <link>http://www.example.org/rss/news.rss</link>
??? <description>Newsfeed von mir,
??? ein Service der Ich AG
??? </description>
??? <language>de</language>
??? <pubDate>Wed, 06 Apr 2005 17:00:00 GMT</pubDate>
??? <lastBuildDate>Wed, 06 Apr 2005 17:00:00 GMT</lastBuildDate>
??? <generator>Weblog Editor 2.0</generator>
??? <managingEditor>editor@example.org</managingEditor>
??? <webMaster>webmaster@example.org</webMaster>
??? <item>
????? <title>Schon gewu?t?</title>
????? <description>
????? Blindtexte konnen philosophische Abgrunde bergen.
????? </description>
????? <pubDate>Wed, 06 Apr 2005 17:00:00 GMT</pubDate>
????? <link>
????? http://www.example.org/rss/artikel-050406170000-01.htm
????? </link>
?? </item>
?? <item>
????? <title>Blindtext selbst gemacht</title>
????? <description>
????? Was Sie beim Verfassen eigener Blindtexte
????? beachten mussen.
????? </description>
????? <pubDate>Wed, 06 Apr 2005 18:07:24 GMT</pubDate>
????? <link>
????? http://www.example.org/rss/artikel-050406180724-01.htm
????? </link>
?? </item>
</channel>
</rss>?
S.892: SOAP-Message
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
? <W:auth xmlns:W="http://www.example.org/urns/w">
? <W:user>client0837</W:user>
? <W:pwd>fzudfhrnfd5567832hh145bnfnjrug5</W:pwd>
? </W:auth>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
? <WD:getWeather xmlns:WD="http://www.example.org/urns/wd">
? <WD:forCountryCode xsi:type="xsd:string">GER</WD:forCountryCode>
? <WD:fromDate xsi:type="xsd:date">2006-05-17</WD:fromDate>
? <WD:toDate xsi:type="xsd:date">2006-05-20</WD:toDate>
? </WD:getWeather>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>?
S.893: SOAP-Antwort
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:WeatherResponse xmlns:namesp1="urn:xmethodsWeatherResponse">
? <ns1:Request
?????? ns1:forCountryCode="GER"
?????? ns1:fromDate="2006-05-17
?????? ns1:toDate="2006-05-17" />
? <ns1:Return>
??? <ns1:TempMin xsi:type="xsd:integer">8</ns1:TempMin>
??? <ns1:TempMax xsi:type="xsd:integer">21</ns1:TempMax>
??? <ns1:Text xsi:type="xsd:string">cloudy, some rain showers</ns1:Text>
? </ns1:Return>
</ns1:WeatherResponse
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>?
S.894: SOAP-Attribute
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
??? xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
??? xmlns:xsd="http://www.w3.org/2001/XMLSchema"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
? <W:auth xmlns:W="http://www.example.org/urns/w" SOAP-ENV:mustUnderstand="true">
? <W:user>client0837</W:user>
? <W:pwd>fzudfhrnfd5567832hh145bnfnjrug5</W:pwd>
? </W:auth>
</SOAP-ENV:Header>
<!-- usw. -->
</SOAP-ENV:Envelope>
?
?
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
??? xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
??? xmlns:xsd="http://www.w3.org/2001/XMLSchema"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
? <W:auth xmlns:W="http://www.example.org/urns/w"
???? SOAP-ENV:role="http://www.w3.org/2003/05/soap-envelope/role/next">
? <W:user>client0837</W:user>
? <W:pwd>fzudfhrnfd5567832hh145bnfnjrug5</W:pwd>
? </W:auth>
</SOAP-ENV:Header>
<!-- usw. -->
</SOAP-ENV:Envelope>
?
?
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
??? xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
??? xmlns:xsd="http://www.w3.org/2001/XMLSchema"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
? <W:auth xmlns:W="http://www.example.org/urns/w"
??? SOAP-ENV:role="http://www.w3.org/2003/05/soap-envelope/role/next"
??? SOAP:ENV:relay="true">
? <W:user>client0837</W:user>
? <W:pwd>fzudfhrnfd5567832hh145bnfnjrug5</W:pwd>
? </W:auth>
</SOAP-ENV:Header>
<!-- usw. -->
</SOAP-ENV:Envelope>?
S.896: SOAP-Faults
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
??? xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-envelope"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
? <SOAP-ENV:Fault>
???? <SOAP-ENV:Code>
?????? <SOAP-ENV:Value>Sender</SOAP-ENV:Value>
???? </SOAP-ENV:Code>
???? <SOAP-ENV:Reason xml:lang="de">
?????? Passwortangabe fehlerhaft
???? </SOAP-ENV:Reason>
???? <SOAP-ENV:Detail>
?????? 20 Zeichen wurden empfangen.
?????? 32 Zeichen wurden erwartet.
???? </SOAP-ENV:Detail>
? </SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>?
14.8: Beispiel WSDL-Datei
<?xml version="1.0" ?>
<definitions name="WeatherReport"
targetNamespace="http://www.example.org/weather.wsdl"
?? xmlns:tns="http://www.example.org/weather.wsdl"
?? xmlns:xsd="http://www.w3.org/2001/XMLSchema"
?? xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
?? xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
? <schema xmlns="http://www.w3.org/2001/XMLSchema"
??? targetNamespace="http://www.example.org/xsd">
? </schema>
? </types>
?? <message name="getWeatherRequest">
???? <part name="forCountryCode" type="string" />
???? <part name="fromDate" type="date" />
???? <part name="toDate" type="date" />
?? </message>
?? <message name="getWeatherResponse">
???? <part name="forCountryCode" type="string" />
???? <part name="fromDate" type="date" />
???? <part name="toDate" type="date" />
?? </message>
?? <portType name="PortForGetWeather">
???? <operation name="getWeather">
?????? <input message="tns:getWeatherRequest"/>
?????? <output message="tns:getWeatherResponse"/>
???? </operation>
?? </portType>
?? <binding name="getWeatherSOAPBinding"
????? type="tns:PortForGetWeather">
???? <soap:binding style="document"
????? transport="http://schemas.xmlsoap.org/soap/http" />
???? <operation name="getWeather">
???? <soap:operation
????? soapAction="http://www.example.org/soap/Weather"/>
???? <input>
?????? <soap:body use="literal"/>
???? </input>
???? <output>
?????? <soap:body use="literal"/>
???? </output>
???? </operation>
?? </binding>
?? <service name="Weather Report">
???? <port name="PortForGetWeather"
????? binding="tns:getWeatherSOAPBinding">
?????? <soap:address
??????? location="http://www.example.org/Weather"/>
???? </port>
? </service>
</definitions>?
S.902: WDDX-Beispiel
<?xml version='1.0'?>
<wddxPacket version='1.0'>
<header/>
<data>
? <struct>
??? <var name='CountryCode'><string>GER</CountryCode></var>
??? <var name='fromDate'><date>2006-05-17</date></var>
??? <var name='toDate'><date>2006-05-20</date></var>
? </struct>
</data>
</wddxPacket>
?
<?xml version='1.0'?>
<wddxPacket version='1.0'>
<header/>
<data>
? <struct>
??? <var name='CountryCode'><string>GER</CountryCode></var>
??? Dokumenttypdefinitionen (DTDs) 903
??? <var name='fromDate'><date>2006-05-17</date></var>
??? <var name='toDate'><date>2006-05-20</date></var>
??? <var name='TempMin'><number>8</number></var>
??? <var name='TempMax'><number>21</number></var>
??? <var name='Text'><string>cloudy, some rain showers</string></Text>
? </struct>
</data>
</wddxPacket>?
14.9: Beispiel XML-Datei (members)
<?xml version="1.0"?>
<!DOCTYPE members SYSTEM "members.dtd">
<members>
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>?
14.10: Beispiel DTD (members)
<!ELEMENT members (member)+>
<!ELEMENT member (given_name, family_name, member_since)>
<!ELEMENT given_name (#PCDATA)>
<!ELEMENT family_name (#PCDATA)>
<!ELEMENT member_since (yyyy, mm, dd)>
<!ELEMENT yyyy (#PCDATA)>
<!ELEMENT mm (#PCDATA)>
<!ELEMENT dd (#PCDATA)>
<!ATTLIST member
? nr ID #REQUIRED
? position CDATA #REQUIRED
>?
14.11: Erweiterte DTD (members)
<!ELEMENT members ((member+) | org>
<!ELEMENT org (org_name | org_type | org_city)>
<!ELEMENT org_name (#PCDATA)>
<!ELEMENT org_type (#PCDATA)>
<!ELEMENT org_city (#PCDATA)>
<!ELEMENT member (member_contact? | member_name | member_info)>
<!ELEMENT member_contact (member_address | member_phone? | member_mail?)>
<!ELEMENT member_address (member_street? | member_zipcode? | member_city)>
<!ELEMENT member_phone (#PCDATA)>
<!ELEMENT member_mail (#PCDATA)>
<!ELEMENT member_street (#PCDATA)>
<!ELEMENT member_zipcode (#PCDATA)>
<!ELEMENT member_city (#PCDATA)>
<!ELEMENT member_name (member_nick_name? | member_given_name | member_family_name)>
<!ELEMENT member_nick_name (#PCDATA)>
<!ELEMENT member_given_name (#PCDATA)>
<!ELEMENT member_family_name (#PCDATA)>
<!ELEMENT member_info (member_since | member_self_info?)>
<!ELEMENT member_since (yyyy, mm, dd)>
<!ELEMENT yyyy (#PCDATA)>
<!ELEMENT mm (#PCDATA)>
<!ELEMENT dd (#PCDATA)>
<!ELEMENT member_self_info (p | h)*>
<!ELEMENT p (#PCDATA | b | i | url)*>
<!ELEMENT h (#PCDATA)>
<!ELEMENT b (#PCDATA | i)*>
<!ELEMENT i (#PCDATA)>?
14.12: XML mit Schema-Bezug
<?xml version="1.0"?>
<members xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
???? xsi:noNamespaceSchemaLocation="members.xsd">
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>?
14.13: XML-Schema-Definitionen
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
?<xs:element name="members">
? <xs:complexType>
?? <xs:element name="member" minOccurs="1" maxOccurs="unbounded">
??? <xs:complexType>
???? <xs:sequence>
????? <xs:element name="given_name" type="xs:string" />
????? <xs:element name="family_name" type="xs:string" />
????? <xs:element name="member_since">
????? <xs:complexType>
?????? <xs:sequence>
??????? <xs:element name="yyyy" type="xs:integer" />
??????? <xs:element name="mm" type="xs:integer" />
??????? <xs:element name="dd" type="xs:integer" />
?????? </xs:sequence>
????? </xs:complexType>
???? </xs:element>
??? </xs:sequence>
??? <xs:attribute name="nr" use="required" type="xs:integer"/>
??? <xs:attribute name="position" use="required" default="none">
???? <xs:simpleType>
????? <xs:restriction base="xs:string">
????? <xs:enumeration value="none" />
????? <xs:enumeration value="committee" />
????? <xs:enumeration value="sponsor" />
????? </xs:restriction>
???? </xs:simpleType>
??? </xs:attribute>
??? </xs:complexType>
?? </xs:element>
? </xs:complexType>
?</xs:element>
</xs:schema>?
S.926: Transformationsbeispiel
<?xml version="1.0" encoding=" UTF-8"?>
<book isbn="3-8273-2218-9">
? <author>Stefan Munz</author>
? <title>Professionelle Websites</title>
? <lang>de</lang>
? <content>
??? <keywords>HTML, CSS, JavaScript, DOM, PHP, MySQL</keywords>
??? <description>Einfuhrungswerk fur Web-Entwickler, die
??? alle heute ma?geblichen Technologien und Aspekte der
??? Erstellung professioneller Websites kennen und anwenden
??? wollen.</description>
? </content>
</book>
?
?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
? <html>
? <head>
? <title><xsl:value-of select="book/title" /></title>
? <meta http-equiv="content-type" content="text/html; charset= UTF-8" />
? </head>
? <body>
? <h1><xsl:value-of select="book/title" /></h1>
? <ul>
? <li><b>Autor:</b> <xsl:value-of select="book/author" /></li>
? <li><b>ISBN:</b> <xsl:value-of select="book/@isbn" /></li>
? <li><b>Kurzbeschreibung:</b><br />
? <xsl:value-of select="book/content/description" /></li>
? </ul>
? </body>
? </html>
</xsl:template>
</xsl:stylesheet>?
S.929: Wichtige XSLT-Elemente
<?xml version="1.0"?>
<members>
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>
?
<?xml version="1.0" encoding=" UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
930 14 XML fur Webentwickler
<xsl:template match="/">
? <html>
? <head>
? <title>Mitglieder</title>
? <meta http-equiv="content-type" content="text/html; charset= UTF-8" />
? </head>
? <body>
? <h1>Mitglieder</h1>
? <table border="1">
? <tr>
? <th style="text-align:left">Mitgliedsnummer</th>
? <th style="text-align:left">Mitgliedsname</th>
? <th style="text-align:left">Mitglied seit</th>
? </tr>
? <xsl:apply-templates />
? </table>
? </body>
? </html>
</xsl:template>
<xsl:template match="members">
? <xsl:for-each select="member">
? <xsl:if test="member_since/yyyy < 2005">
??? <tr>
??? <td style="text-align:left"><xsl:value-of select="@nr" /></td>
??? <td style="text-align:left"><xsl:value-of select="given_name" />
??? <xsl:value-of select="family_name" /></td>
??? <td style="text-align:left"><xsl:value-of select="member_since/dd" />.
??? <xsl:value-of select="member_since/mm" />.
??? <xsl:value-of select="member_since/yyyy" /></td>
??? </tr>
? </xsl:if>
? </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
?
?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Mitglieder</title>
</head>
<body>
<h1>Mitglieder</h1>
<table border="1">
<tr>
<th style="text-align:left">Mitgliedsnummer</th>
<th style="text-align:left">Mitgliedsname</th>
<th style="text-align:left">Mitglied seit</th>
</tr>
<tr>
<td style="text-align:left">19341</td>
Ubersetzung von XML-Daten in HTML/XHTML 931
<td style="text-align:left">AnnaLyse</td>
<td style="text-align:left">18.10.2003</td>
</tr>
<tr>
<td style="text-align:left">11294</td>
<td style="text-align:left">ReinerWahnsinn</td>
<td style="text-align:left">23.02.1998</td>
</tr>
</table>
</body>
</html>?
S.932: XSLT-Fallunterscheidungen
<xsl:template match="members">
? <xsl:for-each select="member">
??? <xsl:choose>
????? <xsl:when test="member_since/yyyy > 2004">
??????? <tr style="background-color:#FFFFCC">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="given_name" />
??????? Ubersetzung von XML-Daten in HTML/XHTML 933
??????? <xsl:value-of select="family_name" /></td>
??????? <td><xsl:value-of select="member_since/dd" />.
??????? <xsl:value-of select="member_since/mm" />.
??????? <xsl:value-of select="member_since/yyyy" /></td>
??????? </tr>
????? </xsl:when>
????? <xsl:when test="member_since/yyyy >= 2000 and
????? member_since/yyyy <= 2003">
??????? <tr style="background-color:#CCFFFF">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="given_name" />
??????? <xsl:value-of select="family_name" /></td>
??????? <td><xsl:value-of select="member_since/dd" />.
??????? <xsl:value-of select="member_since/mm" />.
??????? <xsl:value-of select="member_since/yyyy" /></td>
??????? </tr>
????? </xsl:when>
????? <xsl:otherwise>
??????? <tr style="background-color:#FFCCFF">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="given_name" />
??????? <xsl:value-of select="family_name" /></td>
??????? <td><xsl:value-of select="member_since/dd" />.
??????? <xsl:value-of select="member_since/mm" />.
??????? <xsl:value-of select="member_since/yyyy" /></td>
??????? </tr>
????? </xsl:otherwise>
??? </xsl:choose>
? </xsl:for-each>
</xsl:template>?
S.934: Elemente / Attribute erzeugen
<?xml version="1.0" encoding="ISO-8859-1"?>
<foto>
? <url>/images/fotos/hamburg/michel.png</url>
? <data>
??? <title>Der Hamburger Michel</title>
??? <author>Rainer Wahnsinn</author>
??? <timestamp>2006-04-19 13:24</timestamp>
??? <px-width>2272</px-width>
??? <px-height>1704</px-height>
? </data>
</foto>
?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:attribute-set name="img_url">
<xsl:attribute name="src">
<xsl:value-of select="/foto/url" />
</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="img_width">
<xsl:attribute name="width">
<xsl:value-of select="/foto/data/px-width" />
</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="img_height">
<xsl:attribute name="height">
<xsl:value-of select="/foto/data/px-height" />
</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="img_alt">
<xsl:attribute name="alt">
<xsl:value-of select="/foto/data/title" />
</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="/">
? <html>
? <head>
? <title><xsl:value-of select="foto/data/title" /></title>
? <meta http-equiv="content-type" content="text/html; charset=utf-8" />
? </head>
? <body>
? Ubersetzung von XML-Daten in HTML/XHTML 935
? <h1><xsl:value-of select="foto/data/title" /></h1>
? <p>
? <xsl:element name="img" use-attribute-sets="img_url img_width img_height img_alt">
? </xsl:element>
? </p>
? </body>
? </html>
</xsl:template>
</xsl:stylesheet>
?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Der Hamburger Michel</title>
</head>
<body>
<h1>Der Hamburger Michel</h1>
<p><img src="/images/fotos/hamburg/michel.png" width="2272" height="1704"
alt="Der Hamburger Michel"></p>
</body>
</html>?
S.937: XPath-Funktionen
<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
? <product nr="kr345">
??? <title>Krawuse XL3</title>
??? <price>
????? <value offer="standard">39.90</value>
????? <valid-from>2006-04-15</valid-from>
????? <valid-until>2006-05-31</valid-until>
??? </price>
? </product>
? <product nr="hw8245">
??? <title>Pirolle "Abalim"</title>
??? <price>
????? <value offer="special">24.95</value>
????? <valid-from>2006-04-15</valid-from>
????? <valid-until>2006-06-30</valid-until>
??? </price>
? </product>
? <product nr="cg674">
??? <title>Jumelbrase XL</title>
??? <price>
????? <value offer="special">1295</value>
????? <valid-from>2006-03-01</valid-from>
????? <valid-until>2006-05-31</valid-until>
??? </price>
? </product>
</products>
?
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
???? xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:decimal-format name="german" decimal-separator=","
grouping-separator="."/>
<xsl:attribute-set name="dark">
<xsl:attribute name="style">background-color:#D0D0D0
</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="light">
<xsl:attribute name="style">background-color:#F0F0F0
</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="special">
<xsl:attribute name="style">background-color:#CCFFCC
</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="/">
? <html>
? <head>
? <title>Angebote</title>
? <meta http-equiv="content-type"
???? content="text/html; charset=utf-8" />
? </head>
? <body>
? <h1>Angebote</h1>
? <table border="1">
? <tr>
? <th style="text-align:left">Produkt</th>
? <th style="text-align:left">Titel</th>
? <th style="text-align:right">Preis</th>
? <th style="text-align:center">gultig bis</th>
? </tr>
? <xsl:apply-templates />
? </table>
? </body>
? </html>
</xsl:template>
<xsl:template match="products">
? <xsl:for-each select="product">
? <xsl:choose>
??? <xsl:when test="price/value/@offer='special'">
????? <xsl:element name="tr" use-attribute-sets="special">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="title" /></td>
??????? <td style="text-align:right">?
??????? <xsl:value-ofselect="format-number(price/value,'#.##0,00','german')"/>
??????? </td>
??????? <td style="text-align:center">
??????? <xsl:value-ofselect="substring(price/valid-until, 9, 2)" />.
??????? <xsl:value-of select="substring(price/valid-until, 6, 2)" />.</td>
????? </xsl:element>
??? </xsl:when>
??? <xsl:otherwise>
??? <xsl:choose>
????? <xsl:when test="position() mod 2 = 0">
??????? <xsl:element name="tr" use-attribute-sets="dark">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="title" /></td>
??????? <td style="text-align:right">?
??????? <xsl:value-of select="format-number(price/value, '#.##0,00','german')"/>
??????? </td>
??????? <td style="text-align:center">
??????? <xsl:value-of select="substring(price/valid-until, 9, 2)" />.
??????? <xsl:value-of select="substring(price/valid-until, 6, 2)" />.</td>
??????? </xsl:element>
????? </xsl:when>
????? <xsl:otherwise>
??????? <xsl:element name="tr" use-attribute-sets="light">
??????? <td><xsl:value-of select="@nr" /></td>
??????? <td><xsl:value-of select="title" /></td>
??????? <td style="text-align:right">?
??????? <xsl:value-of select="format-number(price/value,'#.##0,00','german')"/>
??????? </td>
??????? <td style="text-align:center">
??????? <xsl:value-of select="substring(price/valid-until, 9, 2)" />.
??????? <xsl:value-of select="substring(price/valid-until, 6, 2)" />.</td>
??????? </xsl:element>
????? </xsl:otherwise>
??? </xsl:choose>
? </xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>?
S.946: SimpleXML-Klasse PHP
<?xml version="1.0"?>
<members>
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>
?
<?php
? if(file_exists("members.xml"))
??? $xml = simplexml_load_file("members.xml");
? else
??? exit("members.xml nicht gefunden!");
?? foreach ($xml->children() as $member) {
???? if($member->given_name == "Reiner" and $member->family_name == "Wahnsinn") {
?????? $member_nr = $member['nr'];
?????? $member_name = $member->given_name." ".$member->family_name;
?????? $member_since = $member->member_since->dd.".".$member->member_since->mm.".".
?????????????????????? $member->member_since->yyyy;
?????? echo "<p>Name: ", $member_name, "<br>";
?????? echo "Mitgliedsnummer: ", $member_nr, "<br>";
?????? echo "Mitglied seit: ", $member_since, "</p>";
???? }
? }
?>?
S.950: DOM-Klasse PHP
<?xml version="1.0"?>
<members>
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>
?
<?php
? if(file_exists("members.xml")) {
??? $dom = new DOMDocument("1.0", "UTF-8");
??? if(!$dom)
????? exit("Konnte kein DOM-Objekt erzeugen!");
??? if(!$dom->load("members.xml"))
????? exit("members.xml konnte nicht eingelesen werden!");
??? $dom->preserveWhiteSpace = false;
? }
? else
??? exit("members.xml nicht gefunden!");
? $member_elems = $dom->getElementsByTagName('member');
? for($i = 1; $i <= $member_elems->length; $i++) {
??? $given_name = get_node_value($dom, "/members/member[".$i."]/given_name");
??? $family_name = get_node_value($dom, "/members/member[".$i."]/family_name");
??? if($given_name == "Reiner" and $family_name == "Wahnsinn") {
????? $member_nr = get_node_value($dom, "/members/member[".$i."]/@nr");
????? $member_since =
???????? get_node_value($dom, "/members/member[".$i."]/member_since/dd").
???????? get_node_value($dom, "/members/member[".$i."]/member_since/mm").
???????? get_node_value($dom, "/members/member[".$i."]/member_since/yyyy");
????? echo "<p>Name: $given_name $family_name<br>";
????? echo "Mitgliedsnummer: ", $member_nr, "<br>";
????? echo "Mitglied seit: ", $member_since, "</p>";
??? }
? }
?
? function get_node($dom, $xpath) {
??? $path = new DOMXPath($dom);
??? $nodes = @$path->query($xpath);
??? if(!is_object($nodes))
????? return(false);
??? else
????? return($nodes->item(0));
? }
? function get_node_value($dom, $xpath) {
??? $path = new DOMXPath($dom);
??? $nodes = @$path->query($xpath);
??? if(!is_object($nodes))
????? return(false);
??? else
????? return($nodes->item(0)->nodeValue);
?? }
?>?
S.957: XML-Daten erzeugen/schreiben
<?php
? $data['customer'] = array(
??? 'given_name' => "Anna",
??? 'family_name' => "Lyse",
??? 'mail' => "anna_lyse@example.org",
??? 'customer_id' => 404035);
? $data['order'] = array(
??? 'product_id' => "XR5934",
??? 'price' => 39.90,
??? 'tax_percent' => 16,
??? 'dispatch_mode' => "cash on delivery");
? $dom = new DOMDocument("1.0", "UTF-8");
? if(!$dom)
??? exit("Konnte kein DOM-Objekt erzeugen!");
? $dom->preserveWhiteSpace = false;
? $root_elem = $dom->createElement('order');
? $customer_elem = $dom->createElement('customer');
? $name_elem = $dom->createElement('name');
? $given_name_elem = $dom->createElement('given_name', $data['customer']['given_name']);
? $family_name_elem = $dom->createElement('family_name', $data['customer']['family_name']);
? $mail_elem = $dom->createElement('mail', $data['customer']['mail']);
? $details_elem = $dom->createElement('details');
? $product_elem = $dom->createElement('product');
? $price_elem = $dom->createElement('price', $data['order']['price']);
? $tax_percent_elem = $dom->createElement('tax_percent', $data['order']['tax_percent']);
? $dispatch_mode_elem = $dom->createElement('dispatch_mode', $data['order']['dispatch_mode']);
? $root = $dom->appendChild($root_elem);
? $customer = $root->appendChild($customer_elem);
? $customer->setAttribute("cid", $data['customer']['customer_id']);
? $name = $customer->appendChild($name_elem);
? $given_name = $name->appendChild($given_name_elem);
? $family_name = $name->appendChild($family_name_elem);
? $mail = $customer->appendChild($mail_elem);
? $details = $root->appendChild($details_elem);
? $product = $details->appendChild($product_elem);
? $product->setAttribute("pid", $data['order']['product_id']);
? $price = $details->appendChild($price_elem);
? $tax_percent = $details->appendChild($tax_percent_elem);
? $dispatch_mode = $details->appendChild($dispatch_mode_elem);
? $dom->save("order_".time().".xml");
?>
?
?
<?xml version="1.0" encoding="UTF-8"?>
<order>
? <customer cid="404035">
??? <name>
????? <given_name>Anna</given_name>
????? <family_name>Lyse</family_name>
??? </name>
??? <mail>anna_lyse@example.org</mail>
? </customer>
? <details>
??? <product pid="XR5934"/>
??? <price>39.90</price>
??? <tax_percent>16</tax_percent>
??? <dispatch_mode>cash on delivery</dispatch_mode>
? </details>
</order>?
S.960: XML-Klasse (expat) PHP
<?xml version="1.0"?>
<members>
? <member nr="19341" position="none">
??? <given_name>Anna</given_name>
??? <family_name>Lyse</family_name>
??? <member_since>
????? <yyyy>2003</yyyy><mm>10</mm><dd>18</dd>
??? </member_since>
? </member>
? <member nr="11294" position="committee">
??? <given_name>Reiner</given_name>
??? <family_name>Wahnsinn</family_name>
??? <member_since>
????? <yyyy>1998</yyyy><mm>02</mm><dd>23</dd>
??? </member_since>
? </member>
? <member nr="20845" position="none">
??? <given_name>Mira</given_name>
??? <family_name>Mare</family_name>
??? <member_since>
????? <yyyy>2005</yyyy><mm>06</mm><dd>01</dd>
??? </member_since>
? </member>
</members>
?
<?php
? $elem = "";
? $member = array(
??? 'nr' => "",
??? 'given_name' => "",
??? 'family_name' => "",
??? 'dd' => "",
??? 'mm' => "",
??? 'yyyy' => "");
? $look_for = array(
??? 'given_name' => "Rainer",
??? 'family_name' => "Wahnsinn",
? );
? if(file_exists("members.xml")) {
??? $xml_parser = xml_parser_create();
??? xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
??? xml_set_element_handler($xml_parser, "startElement", "endElement");
??? xml_set_character_data_handler($xml_parser, "characterData");
? }
? else
??? exit("members.xml nicht gefunden!");
? $fp = fopen("members.xml", "r");
? while($data = fread($fp, 4096))
??? if(!xml_parse($xml_parser, $data, feof($fp)))
????? exit(sprintf("XML-Fehler: %s in Zeile %d",
? xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
? xml_parser_free($xml_parser);
? fclose($fp);
? function startElement($parser, $name, $attrs) {
??? global $member, $elem;
??? $elem = $name;
??? if($name == "member")
????? foreach($attrs as $key => $value)
??????? if($key == "nr")
????????? $member['nr'] = $value;
? }
? function endElement($parser, $name) {
??? global $member, $elem, $look_for;
??? $elem = "";
??? if($name == "member") {
????? if($member['given_name'] == $look_for['given_name']
????? and $member['family_name'] == $look_for['family_name'])
???????? print_data();
????? $member['nr'] = "";
????? $member['given_name'] = "";
????? $member['family_name'] = "";
????? $member['dd'] = "";
????? $member['mm'] = "";
????? $member['yyyy'] = "";
??? }
? }
? function characterData($parser, $data) {
??? global $member, $elem;
??? $elems = array_keys($member);
??? if(in_array($elem, $elems))
????? $member[$elem] = $data;
? }
? function print_data() {
??? global $member;
??? echo "<p>Name: ", $member['given_name'], " ", $member['family_name'], "<br>";
??? echo "Mitgliedsnummer: ", $member['nr'], "<br>";
??? echo "Mitglied seit: ", $member['dd'], ".",
??? $member['mm'], ".",$member['yyyy'] ,"</p>";
? }
?>?
S.969: News-Script RSS-Funktion
<?php
// Variablen
$db_host = "localhost";
$db_user = "siteuser";
$db_passwd = "";
$db_name = "site";
$news_table = "news";
$feed_days_back = 10;
$feed_language = "de";
$feed_title = "Unsere tollen News";
$feed_url = "http://mein.server/rss.php";
$feed_description =
"Fast taglich fallen Sacke mit Reis um. Wir sind dabei.";
$feed_master = "my.mail@example.org";
$webnews_url = "http://mein.server/news.php?news=";
// Datenermittlung
$dbh = mysql_connect($db_host, $db_user, $db_passwd);
if(!$dbh)
? die("Keine Datenbankverbindung!");
$db = mysql_select_db($db_name);
$from_date = date("Y-m-d", time() - ($feed_days_back * 24 * 60 * 60));
$sql = "select nid, title, short_text, pub_date from news";
$sql .= " where language = '".$feed_language."'";
$sql .= " and pub_date >= '".$from_date."'";
$sql .= " order by pub_date DESC";
$res = mysql_query($sql, $dbh);
if(!$res)
? die("Fehler beim Einlesen der News");
$news_data = array();
while($record = mysql_fetch_array($res, MYSQL_ASSOC))
? $news_data[] = $record;
// XML-Generierung RSS-Feed
$dom = new DOMDocument("1.0", "UTF-8");
if(!$dom)
? die("Konnte kein DOM-Objekt erzeugen!");
//$dom->preserveWhiteSpace = false;
$rss = add_element("rss", $dom);
$rss->setAttribute("version", "2.0");
$channel = add_element("channel", $rss);
add_value_element("title", $feed_title, $channel);
add_value_element("link", $feed_url, $channel);
add_value_element("description", $feed_description, $channel);
add_value_element("language", $feed_language, $channel);
add_value_element("pubDate",
gmdate('D, d M Y H:i:s')." GMT", $channel);
add_value_element("webMaster", $feed_master, $channel);
for($i = 0; $i < count($news_data); $i++) {
? $item[$i] = add_element("item", $channel);
? add_value_element("title", $news_data[$i]['title'], $item[$i]);
? add_value_element("description", $news_data[$i]['short_text'], $item[$i]);
? add_value_element("pubDate", $news_data[$i]['pub_date'], $item[$i]);
? add_value_element("link", $webnews_url.$news_data[$i]['nid'], $item[$i]);
}
// Ausgabe der RSS-Daten
header("Expires: Sat, 1 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-Type: text/xml");
echo $dom->saveXML();
// Funktion zum Erzeugen/Einfugen eines Elements
// mit Elementinhalt
function add_element($name, $ref_obj) {
? global $dom;
? $elem = $dom->createElement($name);
? $tree_elem = $ref_obj->appendChild($elem);
? return($tree_elem);
}
// Funktion zum Erzeugen/Einfugen eines Elements
// mit Texttinhalt
function add_value_element($name, $value, $ref_obj) {
? global $dom;
? $utf8_value = utf8_encode($value);
? $elem = $dom->createElement($name, $utf8_value);
? $tree_elem = $ref_obj->appendChild($elem);
? return($tree_elem);
}
?>?
S.973: Google als SOAP-Service
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="de">
<head>
? <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
? <title>Google-Suche</title>
? <link rel="stylesheet" type="text/css" href="winkel.css">
? </head>
<body>
? <div id="top_section">
? <img src="winkellogo.gif" id="logo" alt="Logo">
? <form id="search" action="google.php" method="get">
? <input type="hidden" id="offset" name="offset" value="[%offset%]">
? <span id="search_label">Suche in Google:</span>
? <input type="text" id="search_text" name="search_text" value="[%search%]">
? <input type="submit" src="ok.gif" id="search_button" value="OK">
? </form>
? </div>
? <div id="main_section">
? <div id="navigation">
? <img id="navigation_pic" src="navi.gif" alt="Navigation">
? </div>
? <div id="content">
? [%content%]
? <hr style="border: solid 1px rgb(175,35,35)">
? <p>[%prev%][%prevnext%][%next%]</p>
? </div>
? </div>
</body>
</html>
?
<?php
// Template einlesen
$layout_template = "google.tpl";
$page = file_get_contents($layout_template);
$est_total_hits = 0;
$found_hits = 0;
$offset = 0;
$prev = "";
$next = "";
$prevnext = "";
// sinnvolle Optionen einstellen
ini_set("soap.wsdl_cache_enabled", "1");
ini_set("soap.wsdl_cache_dir", "/tmp");
ini_set("soap.wsdl_cache_ttl", "86400");
// Wenn eine Suche vorliegt
if(isset($_GET['search_text']) and isset($_GET['offset'])) {
? if(get_magic_quotes_gpc())
??? $_GET['search_text'] = stripslashes($_GET['search_text']);
? $content = get_google_results();
? $page = str_replace("[%search%]", htmlspecialchars($_GET['search_text']), $page);
? $page = str_replace("[%content%]", $content, $page);
? if((int) $_GET['offset'] > 10) {
??? $offset = (int) $_GET['offset'] - 10;
??? $prev = "&offset=".$offset;
? }
? else {
??? if((int) $_GET['offset'] > 0)
????? $prev = "&offset=0";
? }
? if($est_total_hits > (int) $_GET['offset']) {
??? $offset = (int) $_GET['offset'] + 10;
??? $next = "&offset=".$offset;
? }
? if(!empty($prev)) {
??? $search = urldecode(htmlspecialchars($_GET['search_text']));
??? $prevlink = "<a href="google.php?search_text=";
??? $prevlink .= $search.$prev.""><<</a>";
??? $prev = $prevlink;
??? $prevnext = " Ergebnisse ";
? }
? if(!empty($next)) {
??? $search = urldecode(htmlspecialchars($_GET['search_text']));
??? $nextlink = "<a href="google.php?search_text=";
??? $nextlink .= $search.$next."">>></a>";
??? $next = $nextlink;
??? $prevnext = " Ergebnisse ";
? }
}
else {
? $page = str_replace("[%search%]", "", $page);
? $page = str_replace("[%content%]", "<p>Suchen Sie in Google!</p>", $page);
}
$page = str_replace("[%prev%]", $prev, $page);
$page = str_replace("[%prevnext%]", $prevnext, $page);
$page = str_replace("[%next%]", $next, $page);
$page = str_replace("[%offset%]", $offset, $page);
echo $page;
// Funktion zum Ermitteln der Google-Suchergebnisse
function get_google_results() {
? global $found_hits, $est_total_hits;
? $get_offset = (int) $_GET['offset'];
? // SOAP-Client erzeugen
? $client = new SoapClient("http://api.google.com/GoogleSearch.wsdl",
??????????? array('trace' => 1, 'exceptions' => 0));
? // Suchbegriff in UTF-8 umwandeln
? $search_term = utf8_encode($_GET['search_text']);
? // Google-Suche uber SOAP starten
? $result = $client->doGoogleSearch(
??????????? "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", // API-Key
??????????? $search_term, // Suchausdruck
??????????? $get_offset, // Zeige Ergebnisse ab 1. Treffer
??????????? 10, // Anzahl Treffer - 10 ist das Maximum
??????????? FALSE, // ahnliche Treffer loschen
??????????? '', // keine Themenbeschrankung
??????????? false, // auch Treffer "nur fur Erwachsene" anzeigen
??????????? '', // keine Beschrankung auf bestimmte Sprache
??????????? '',''); // diese beiden Parameter immer so ubergeben
? // Prufen ob SOAP-Antwort ein Fault ist
? if(is_soap_fault($result)) {
??? $html = "<p>Webservice-Fehler ";
??? $html .= $result->faultcode.": ";
??? $html .= $result->faultstring."</p>";
??? return($html);
? }
? $found_hits = count($result->resultElements);
? $est_total_hits = $result->estimatedTotalResultsCount;
? if($found_hits == 0) {
??? $html = "<p>Google hat keine passenden ";
??? $html .= " Ergebnisse gefunden:</p>";
??? return($html);
? }
? $html = "<p>Ergebnis ".$result->startIndex." bis ".$result->endIndex;
? $html .= " von isg. ".$result->estimatedTotalResultsCount;
? $html .= " Ergebnissen :</p><ul>";
? foreach($result->resultElements as $hit) {
??? $html .= "<li><a href="".$hit->URL."">";
??? $html .= utf8_decode($hit->title)."</a><br>";
??? $html .= utf8_decode($hit->snippet)."<br>";
??? $html .= "<small style="font-style: italic">";
??? $html .= $hit->URL."</small></li>";
? }
? $html .= "</ul>";
? return($html);
}
?>?
S.984: Plausibilitatsprufung mit WDDX
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<title>Eingabeformular</title>
</head>
<body style="font-size:90%; font-family:sans-serif">
<form action="process.php" method="post"
style="background-color:#E0E0E0; padding:6px">
<table>
<tr>
<th style="text-align:right">Name:</th>
<td><input type="text" name="name" style="width: 300px"></td>
</tr>
<tr>
<th style="text-align:right">Stra?e Hausnummer:</th>
<td><input type="text" name="strasse" style="width: 260px">
<input type="text" name="hnr" style="width: 32px"></td>
</tr>
<tr>
<th style="text-align:right">PLZ Ort:</th>
<td><input type="text" name="plz" style="width: 47px">
<input type="text" name="ort" style="width: 245px"></td>
</tr>
<tr>
<th style="text-align:right">Daten:</th>
<td><input type="submit" style="width:100px" value="senden"></td>
</tr>
</table>
</form>
</body>
</html>
?
?
<?php
if(!isset($_POST['name']) or !isset($_POST['strasse']) or !isset($_POST['hnr']) or
?? !isset($_POST['plz']) or !isset($_POST['ort']))
????? die("Eingabedaten unvollstandig");
if(check_plz_ort() == true)
? do_something_else();
else
? die("Eingabedaten nicht plausibel");
function check_plz_ort() {
? $plz = urlencode($_POST['plz']);
? $ort = urlencode($_POST['ort']);
? $url = "http://wddx.hanft.de/";
? $url .= "address?un=demo&pw=demo&func=check&plz=";
? $url .= $plz."&ort=".$ort;
? $wddx_doc = file_get_contents($url);
? $wddx_array = wddx_deserialize($wddx_doc);
? if($wddx_array['result'] != 0)
??? return(false);
? else
??? return(true);
}
function do_something_else() {
? // Hier konnte die weitere Datenverarbeitung
? // fortgesetzt werden
? echo "Die Eingaben waren in Ordnung";
}
?>?
S.986: WDDX-Dokumente erzeugen
<?php
$data['member_id'] = 4503;
$data['name']['given_name'] = "Reiner";
$data['name']['family_name'] = "Wahnsinn";
$data['member_since'] = "2001-06-25";
echo wddx_serialize_vars("data");
?>
?
<wddxPacket version='1.0'>
<header/>
<data>
? <struct>
??? <var name='data'>
?????? <struct>
???????? <var name='member_id'><number>4503</number></var>
???????? <var name='name'>
???????? <struct>
?????????? <var name='given_name'><string>Reiner</string></var>
?????????? <var name='family_name'><string>Wahnsinn</string></var>
???????? </struct>
?????? </var>
?????? <var name='member_since'><string>2001-06-25</string></var>
???? </struct>
??? </var>
? </struct>
</data>
</wddxPacket>?
listings aus buchkapitel 14 xml fr webworker