+ Antworten
Ergebnis 1 bis 3 von 3

Thema: xml+xslt und formulare

  1. #1
    TP-Newbie Darkened macht alles soweit korrekt
    Registriert seit
    Jan 2007
    Beiträge
    2

    xml+xslt und formulare

    Hallo,

    Ich weiss nicht, ob ich hier im richtigen Forum bin - falls nicht wäre ich für einen Link zu einem passenden Forum dankbar.

    Zu meinem Problem:
    Ich habe eine XML-Datei und eine XSLT-Datei, die daraus eine HTML-Datei machen soll (die 2 Dateien und die generierte HTML-Datei sind unten zu sehen). Im erzeugten Dokument gibt es ein Formular und wenn man das absendet sollte der Browser ein paar Daten mit einem POST-Request verschicken (soweit die Theorie).

    Im Firefox und IE7 funktioniert das ganze auch so wie es soll. Aber Opera schickt leider nur ein POST-Request ohne Daten (also die Request-Methode ist POST, aber die Werte der Formularfelder kommen beim Server nicht an).
    Seltsamerweise ist das anders, wenn ich die transformierte XML-Datei (also die HTML-Datei) direkt im Browser aufrufe - wenn ich dann das Formular absende kommen alle Daten wie gewünscht beim Server an.

    Kennt vielleicht jemand das Problem? Ist das ein Bug im Opera oder in meinen Dokumenten? Gibts es eine Möglichkeit das zu umgehen?

    Nun Der Code:

    1. XML-Datei
    Code:
    <?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="styles/standard.xsl" ?>
    <spiel>
    	<title>Spiel (tm)</title>
    	<content>
    		<form action="login.php">
    			<formhidden>
    				<name>ticket</name>
    				<value>834051ff19a3e92687729d5a91bcc13a</value>
    				<label/>
    			</formhidden>
    			<formtext maxlength="50">
    				<name>username</name>
    				<value/>
    				<label>Benutzername</label>
    			</formtext>
    			<formpassword maxlength="50">
    				<name>password</name>
    				<value/>
    				<label>Passwort</label>
    			</formpassword>
    			<formsubmit name="submit" value="Einloggen"/>
    		</form>
    	</content>
    </spiel>
    2. XSL-Datei
    Code:
    <?xml version="1.0" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    	<xsl:output method="html" indent="yes" media-type="application/xhtml+xml" />
    
    	<xsl:template match="/spiel">
    		<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]]></xsl:text>
    		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    			<head>
    				<xsl:apply-templates select="title" />
    				<meta http-equiv="content-language" content="de" />
    				<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    				<meta http-equiv="expires" content="0" />
    				<link rel="stylesheet" type="text/css" href="styles/standard/main.css" />
    			</head>
    			<body>
    				<div id="title"><img src="images/title.gif" /></div>
    				<xsl:apply-templates select="content" />
    			</body>
    		</html>
    	</xsl:template>
    
    	<xsl:template match="title">
    		<title>
    			<xsl:value-of select="." />
    		</title>
    	</xsl:template>
    		
    	<xsl:template match="content">
    		<div id="content">
    			<xsl:apply-templates select="text | form" />
    		</div>
    	</xsl:template>
    	
    	<xsl:template match="text">
    		<div>
    			<xsl:value-of select="." />
    		</div>
    	</xsl:template>
    	
    	<xsl:template match="form">
    		<div>
    			<form method="POST">
    				<xsl:attribute name="action"><xsl:value-of select="@action" /></xsl:attribute>
    				<table>
    					<xsl:for-each select=".">
    						<xsl:apply-templates select="formtext | formpassword | formhidden | formsubmit" />
    					</xsl:for-each>
    				</table>
    			</form>
    		</div>
    	</xsl:template>
    	
    	<xsl:template match="formtext">
    		<tr>
    			<td><xsl:value-of select="label" /></td>
    			<td>
    				<input type="text">
    					<xsl:attribute name="maxlength"><xsl:value-of select="@maxlength" /></xsl:attribute>
    					<xsl:attribute name="name"><xsl:value-of select="name" /></xsl:attribute>
    					<xsl:attribute name="value"><xsl:value-of select="value" /></xsl:attribute>
    				</input>
    			</td>
    		</tr>
    	</xsl:template>
    
    	<xsl:template match="formpassword">
    		<tr>
    			<td><xsl:value-of select="label" /></td>
    			<td>
    				<input type="password">
    					<xsl:attribute name="maxlength"><xsl:value-of select="@maxlength" /></xsl:attribute>
    					<xsl:attribute name="name"><xsl:value-of select="name" /></xsl:attribute>
    					<xsl:attribute name="value"><xsl:value-of select="value" /></xsl:attribute>
    				</input>
    			</td>
    		</tr>
    	</xsl:template>
    
    	<xsl:template match="formhidden">
    		<input type="hidden">
    			<xsl:attribute name="name"><xsl:value-of select="name" /></xsl:attribute>
    			<xsl:attribute name="value"><xsl:value-of select="value" /></xsl:attribute>
    		</input>
    	</xsl:template>
    
    	<xsl:template match="formsubmit">
    		<tr>
    			<td>&#32;</td>
    			<td>
    				<input type="submit">
    					<xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
    					<xsl:attribute name="value"><xsl:value-of select="@value" /></xsl:attribute>
    				</input>
    			</td>
    		</tr>
    	</xsl:template>
    
    </xsl:stylesheet>
    3. Die HTML-Datei, die sich ergeben sollte
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title xmlns="">Spiel (tm)</title>
    <meta http-equiv="content-language" content="de"/>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
    <meta http-equiv="expires" content="0"/>
    <link rel="stylesheet" type="text/css" href="styles/standard/main.css"/>
    </head>
    <body>
    <div id="title"><img src="images/title.gif"/></div>
    <div id="content" xmlns="">
    <div>
    <form method="POST" action="login.php">
    <table><input type="hidden" name="ticket" value="fbe530d267eaa1f2bbca00fbb55b6c29"><tr>
    <td>Benutzername</td>
    <td><input type="text" maxlength="50" name="username" value=""></td>
    </tr>
    <tr>
    <td>Passwort</td>
    <td><input type="password" maxlength="50" name="password" value=""></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="submit" value="Einloggen"></td>
    </tr>
    </table>
    </form>
    </div>
    </body>
    </html>
    Ich danke schonmal fürs lesen

    MfG
    Darky

  2. #2
    TP-Member kadees ist auf einem guten Weg Avatar von kadees
    Registriert seit
    Jan 2007
    Beiträge
    54
    Kenne mich mit xml und xslt noch nicht so gut aus, aber schau/poste mal hier:
    xhtmlforum.de
    - Serveradministration und serverseitige Scripte

  3. #3
    TP-Newbie Darkened macht alles soweit korrekt
    Registriert seit
    Jan 2007
    Beiträge
    2
    Danke für den Tipp - ich werde es dort mal versuchen.

    Allerdings finde ich es seltsam, dass noch niemand auf das Problem gestossen ist. Gerade in Verbindung mit serverseitigen Scripten ist die Variante mit XML und XSLT meiner Meinung nach viel einfacher zu handhaben...

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51