Генерация полей формы из тегов XML - PullRequest
3 голосов
/ 25 февраля 2011

Я пытаюсь найти способ использовать скрипт 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>

Затем, заполнив и отправив форму (скажем, 25-летний Джоэл из Бостона), на экран будет выведено следующее:

Здравствуйте, меня зовут Джоэл.Мне 25 лет.Я живу в Бостоне.

Любой код или ссылки на хорошие учебники будут оценены.

THX

E.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Вы должны использовать 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>

Существует расширение xsl для php, которое вы можете использовать.

0 голосов
/ 25 февраля 2011

Если ваши заполнители всегда принимают форму <tag></tag>, вы можете искать с помощью регулярных выражений или простого поиска строк, генерировать поля формы, а затем выполнить поиск / замену строки в оригинале, чтобы получить объединенную версию. Это может быть проще, чем делать это с помощью методов синтаксического анализа XML, поскольку содержимое между тегами XML будет анализироваться как узлы содержимого.

В этом отношении я бы использовал заполнитель типа %Name% или $Name$ вместо тега XML, потому что тогда вы можете просто проанализировать его с помощью простых методов сопоставления строк, не влияя на общую структуру XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...