Avatar billede soeni05 Nybegynder
18. december 2008 - 21:33 Der er 13 kommentarer

XML til Form gennem PHP

Jeg har en XML fil der beskriver en opbygningen af en form... Er der nogle der har en ide til hvordan jeg kan få php til at gennerere formen for mig ??
Avatar billede jakobdo Ekspert
18. december 2008 - 21:38 #1
Parse filen med simplexml() og så er det ellers bare at løbe xml objektet igennem og opbygge formen.
Det kræver jo en custom-made funktion.
Avatar billede synthaiz Nybegynder
18. december 2008 - 21:43 #2
Du skal bare have Custom made ..
Avatar billede arne_v Ekspert
18. december 2008 - 21:46 #3
En oplagt mulighed var at lave en XSLT transformation fra XML til HTML.
Avatar billede jakobdo Ekspert
18. december 2008 - 21:48 #4
arne_v: Kan firefox finde ud af det ?
Avatar billede arne_v Ekspert
18. december 2008 - 21:59 #5
1) Ja - FF kan godt lave client side XSLT.

2) Men det var nu server side XSLT i PHP jeg taenkte paa.
Avatar billede soeni05 Nybegynder
18. december 2008 - 22:00 #6
arne_v: Ved du hvor jeg kan finde et eksempel på XSLT transformation fra XML til HTML?
Avatar billede arne_v Ekspert
18. december 2008 - 22:03 #7
Enhver XSLT tutorial boer have XML->HTML.

Selv http://en.wikipedia.org/wiki/XSLT har et !
Avatar billede arne_v Ekspert
18. december 2008 - 22:04 #8
Bemaerk dog at XSLT ikker er noget man saetter sig ind i paa 20 minutter.
Avatar billede soeni05 Nybegynder
19. december 2008 - 15:52 #9
Det her virker ikke... Jeg vil anvende noderne til at oprette formen udfra .. Jeg har på forhånd ikke kendskab til noderne, og det virker som om at man skal kende disse, og så hente indholdet herfra.. :(

Andre forslag ?
Avatar billede arne_v Ekspert
20. december 2008 - 03:28 #10
Man kan stort set alt i XSLT hvis man ved hvordan.

Da du ikke har fortalt hvordan din XML ser ud er det svært at vær ekonkret, men jeg kan give et
par eksempler.
Avatar billede arne_v Ekspert
20. december 2008 - 03:29 #11
a.xml
-----

<form url="foobar.php">
<field name="a" def="This is a"/>
<field name="b" def="This is b"/>
<field name="c" def="This is c"/>
</form>

a.xsl
-----

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

<xsl:template match="/">
<html>
<head>
<title>XSL demo</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="form">
<form>
<xsl:attribute name="method">POST</xsl:attribute>
<xsl:attribute name="action"><xsl:value-of select="@url"/></xsl:attribute>
<xsl:apply-templates/>
<input type="submit" value="Execute"/>
</form>
</xsl:template>

<xsl:template match="field">
<xsl:value-of select="@name"/>:
<input>
<xsl:attribute name="type">TEXT</xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="@def"/></xsl:attribute>
</input>
<br/>
</xsl:template>

</xsl:stylesheet>

a.php
-----

<?php
$xml = new DOMDocument();
$xml->load("a.xml");
$xsl = new DOMDocument();
$xsl->load("a.xsl");
$t = new XSLTProcessor();
$t->importStylesheet($xsl);
echo $t->transformToXML($xml);
?>

output
------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XSL demo</title>
</head>
<body><form method="POST" action="foobar.php">
a:
<input type="TEXT" name="a" value="This is a"><br>
b:
<input type="TEXT" name="b" value="This is b"><br>
c:
<input type="TEXT" name="c" value="This is c"><br>
<input type="submit" value="Execute">
</form></body>
</html>
Avatar billede arne_v Ekspert
20. december 2008 - 03:30 #12
b.xml
-----

<form url="foobar.php">
<a>This is a</a>
<b>This is b</b>
<c>This is c</c>
</form>

b.xsl
-----

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

<xsl:template match="/">
<html>
<head>
<title>XSL demo</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="form">
<form>
<xsl:attribute name="method">POST</xsl:attribute>
<xsl:attribute name="action"><xsl:value-of select="@url"/></xsl:attribute>
<xsl:apply-templates/>
<input type="submit" value="Execute"/>
</form>
</xsl:template>

<xsl:template match="*">
<xsl:value-of select="name()"/>:
<input>
<xsl:attribute name="type">TEXT</xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</input>
<br/>
</xsl:template>

</xsl:stylesheet>

b.php
-----

<?php
$xml = new DOMDocument();
$xml->load("b.xml");
$xsl = new DOMDocument();
$xsl->load("b.xsl");
$t = new XSLTProcessor();
$t->importStylesheet($xsl);
echo $t->transformToXML($xml);
?>

output
------

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>XSL demo</title>
</head>
<body><form method="POST" action="foobar.php">
a:
<input type="TEXT" name="a" value="This is a"><br>
b:
<input type="TEXT" name="b" value="This is b"><br>
c:
<input type="TEXT" name="c" value="This is c"><br>
<input type="submit" value="Execute">
</form></body>
</html>
Avatar billede arne_v Ekspert
19. januar 2009 - 02:09 #13
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester