从 XML 标签生成表单字段

发布于 2024-10-18 21:35:03 字数 663 浏览 3 评论 0原文

我正在尝试找出一种利用 PHP 脚本的方法,该脚本将:

  1. 当链接到时打开 XML 文档 单击该文档(从 HTML 页面)。
  2. 扫描 XML 文档中的标签。
  3. 创建带有输入的 HTML 表单 基于标签的字段。
  4. 将输入数据发送回 XML 在标签内(当表单为 提交)并打印 XML 到 HTML。

因此,如果我有一个如下所示的 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>

然后在完成并提交该表单后(假设该人是 Joel,25 岁​​,来自波士顿),屏幕上将写入以下内容:

你好,我的名字是 Joel。我今年25岁。我住在波士顿。

任何代码或指向好的教程的点将不胜感激。

谢谢

E。

I'm trying to figure out a way to utilize a PHP script that will:

  1. Open an XML document when a link to
    that document is clicked (from an
    HTML page).
  2. Scan the XML document for tags.
  3. Create an HTML form with input
    fields based on the tags.
  4. Post the input data back to the XML
    within the tags (when form is
    submitted) and print the XML
    to HTML.

So, if I had an XML file that went like this:

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

Upon clicking a link to that file, PHP would generate a form like so:

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

Then upon completing and submitting the form (let's say the person is Joel, 25, from Boston), the following would be written to the screen:

Hello, my name is Joel. I am 25 years old. I live in Boston.

Any code or points to good tutorials would be appreciated.

THX

E.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鼻尖触碰 2024-10-25 21:35:03

您应该为此使用 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 扩展。

You should use XSLT for this..

With browser:

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>

output:

<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>

There is an xsl extension for php you can use.

自此以后,行同陌路 2024-10-25 21:35:03

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

就此而言,我会使用像 %Name%$Name$ 这样的占位符来代替 XML 标记,因为这样您就可以使用简单的字符串匹配方法来解析它,不影响整个 XML 结构。

If your placeholders always take the form <tag></tag>, you can search using regular expressions or simple string searching, generate your form fields, then do a string find/replace on the original to get the merged version. That might be easier than doing it through XML parsing methods, because the content between the XML tags will be parsed as content nodes.

For that matter, I would use a placeholder like %Name% or $Name$ instead of an XML tag, because then you can just parse it with simple string matching methods, without interfering with the overall XML structure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文