从XML标签生成表单字段

时间:2011-02-24 23:28:06

标签: php xml forms dynamic input

我正在试图找到一种利用PHP脚本的方法:

  1. 链接到时打开XML文档 单击该文档(来自 HTML页面。)。
  2. 扫描XML文档以查找标记。
  3. 使用输入创建HTML表单 基于标签的字段。
  4. 将输入数据发布回XML 在标签内(当形式是 提交)并打印XML 到HTML。
  5. 所以,如果我有一个像这样的XML文件:

    <profile>
    Hello, my name is <name></name>.  I am <age></age> years old.  I live in <place></place>
    </profile>
    

    单击指向该文件的链接后,PHP将生成如下表单:

    <form> 
    Name:
    Age:
    Place:
    </form>
    

    然后在填写并提交表格后(假设此人是25岁的Joel来自波士顿),以下内容将写入屏幕:

    你好,我叫乔尔。我25岁。我住在波士顿。

    任何代码或指向优秀教程的内容都将受到赞赏。

    THX

    电子。

2 个答案:

答案 0 :(得分:2)

你应该使用XSLT ..

使用浏览器:

的xml:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<profile>
Hello, my name is <name></name>.  I am <age></age> years old.  I live in <place></place>
</profile>

的xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>

    <xsl:template match="profile">
        <form>
            <xsl:for-each select="child::*">
                <label>
                    <xsl:value-of select="name()"/>: 
                    <input name="{name()}" type="text" />
                </label>
                <br />
            </xsl:for-each>
        </form>
    </xsl:template>
</xsl:stylesheet>

输出:

<form>
    <label>name: <input type="text" name="name"></label><br />
    <label>age: <input type="text" name="age"></label><br />
    <label>place: <input type="text" name="place"></label><br />
</form>

你可以使用php的xsl扩展名。

答案 1 :(得分:0)

如果占位符始终采用<tag></tag>形式,则可以使用正则表达式或简单字符串搜索进行搜索,生成表单字段,然后对原始字符串执行字符串查找/替换以获取合并版本。这可能比通过XML解析方法更容易,因为XML标记之间的内容将被解析为内容节点。

就此而言,我会使用像%Name%$Name$这样的占位符而不是XML标记,因为那样你就可以用简单的字符串匹配方法解析它,而不会干扰整个XML结构