Como gerar um arquivo XML de um conjunto de expressões XPath?

Eu quero ser capaz de gerar um arquivo XML completo, dado um conjunto de mapeamentos XPath.

A entrada pode ser especificada em dois mapeamentos: (1) Um que lista as expressões e valores XPath; e (2) o outro que define os namespaces apropriados.

/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

Para namespaces:

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

Note também que é importante que eu também lide com o XPathAtributos expressões também. Por exemplo: eu também deveria ser capaz de manipular atributos, como:

/create/article/@type => richtext

O resultado final deve ser algo como:

<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: Esta é uma questão mais detalhada para um anteriorquestão Perguntei, embora devido a uma série de outros requisitos e esclarecimentos, fui recomendado para fazer uma pergunta mais ampla, a fim de atender às minhas necessidades.

Observe também que estou implementando isso em Java. Portanto, uma solução baseada em Java ou XSLT seria perfeitamente aceitável. thnx.

Nota adicional: Eu estou realmente procurando por umgenérico solução. O XML mostrado acima é apenas um exemplo.

questionAnswers(2)

yourAnswerToTheQuestion