2014-01-31 4 views
1

У меня есть файл XML, который выглядит следующим образом:Scriptella: XML в БД: Insert Into от XPATH

<XML> 
    <Table name='test'> 
    <Row> 
     <Field name='key'>1000</Field> 
     <Field name='text'>Test</Field> 
    </Row> 
    </Table> 
</XML> 

Идентификатор как разобрать этот XML и использовать его в качестве вставки заявления:

<query connection-id="in"> 
    /XML/Table/Row 

    <script connection-id="out"> 
     INSERT INTO X t (
       t.entitykey, 
       t.text 
      ) 
      VALUES 
      (
       ???????? 
      ); 

    </script> 
</query> 

Как мне получить доступ к определенному тегу поля из инструкции insert в XPATH? Мы предпочитаем иметь один XSD, который учитывает все макеты таблиц, а не поддерживать n xsd для каждой таблицы, следовательно, поле [@name].

Благодаря Matthias

ответ

2

Xpath driver выставляет переменную node, которая обеспечивает контекст для выполнения XPATH выражений над возвращаемой в данный момент узла. Вы можете использовать следующее выражение для получения значения для определенного поля:

<script connection-id="out"> 
    INSERT INTO X t (t.entitykey, t.text) 
     VALUES (?{node.getString("./Field[@name = 'text']")}); 
</script>