Как создать файл XML из набора выражений XPath?

Я хочу иметь возможность генерировать полный файл XML, учитывая набор сопоставлений XPath.

Входные данные могут быть указаны в двух сопоставлениях: (1) одно, в котором перечислены выражения и значения XPath; и (2) другой, который определяет соответствующие пространства имен.

/create/article[1]/id                 => 1
/create/article[1]/description        => bar
/create/article[1]/name[1]            => foo
/create/article[1]/price[1]/amount    => 00.00
/create/article[1]/price[1]/currency  => USD
/create/article[2]/id                 => 2
/create/article[2]/description        => some name
/create/article[2]/name[1]            => some description
/create/article[2]/price[1]/amount    => 00.01
/create/article[2]/price[1]/currency  => USD

Для пространств имен:

/create               => xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/
/create/article       => xmlns:ns1='http://predic8.com/material/1/‘
/create/article/price => xmlns:ns1='http://predic8.com/common/1/‘
/create/article/id    => xmlns:ns1='http://predic8.com/material/1/'

Также обратите внимание, что важно, чтобы я также имел дело с XPathAttributes выражения также. Например: я также должен иметь возможность обрабатывать атрибуты, такие как:

/create/article/@type => richtext

Окончательный результат должен выглядеть примерно так:

<ns1:create xmlns:ns1='http://predic8.com/wsdl/material/ArticleService/1/'>
    <ns1:article xmlns:ns1='http://predic8.com/material/1/‘ type='richtext'>
        <name>foo</name>
        <description>bar</description>
        <ns1:price xmlns:ns1='http://predic8.com/common/1/'>
            <amount>00.00</amount>
            <currency>USD</currency>
        </ns1:price>
        <ns1:id xmlns:ns1='http://predic8.com/material/1/'>1</ns1:id>
    </ns1:article>
    <ns1:article xmlns:ns1='http://predic8.com/material/2/‘ type='richtext'>
        <name>some name</name>
        <description>some description</description>
        <ns1:price xmlns:ns1='http://predic8.com/common/2/'>
            <amount>00.01</amount>
            <currency>USD</currency>
        </ns1:price>
        <ns1:id xmlns:ns1='http://predic8.com/material/2/'>2</ns1:id>
    </ns1:article>
</ns1:create>

PS: это более подробный вопрос к предыдущемувопрос спросил, хотя из-за ряда дополнительных требований и разъяснений, мне было рекомендовано задать более широкий вопрос для удовлетворения моих потребностей.

Обратите внимание, я реализую это в Java. Таким образом, решение на основе Java или XSLT будет вполне приемлемым. Thnx.

Дальнейшее примечание: я действительно ищуgeneric решение. XML, показанный выше, является только примером.

Ответы на вопрос(2)

Ваш ответ на вопрос