Speedata и XPath - PullRequest
       9

Speedata и XPath

1 голос
/ 09 ноября 2019

К сожалению, я не могу обработать синтаксис XPath в Laout.xml Speedata. Я программировал XSL в течение многих лет и, возможно, я немного обременен. XML, который я пытаюсь оценить, имеет следующую структуру:

<export>
    <object>
        <fields>
            <field key="demo1:DISPLAY_NAME" lang="de_DE" origin="default" ftype="string">Anwendungsbild</field>
            <field key="demo1:DISPLAY_NAME" lang="en_UK" origin="inherit" ftype="string">application picture</field>
            <field key="demo1:DISPLAY_NAME" lang="es_ES" origin="self" ftype="string">imagen de aplicación</field>
        </fields>
    </object>
</export>

Попытка вывести узел элемента со следующим XPath не удалась.

export/object/fields/field[@key='demo1:DISPLAY_NAME' and @lang='de_DE' and @origin='default']

Как мне сформулировать запросв Speedata Publisher, пожалуйста?

Спасибо за нашу помощь.

1 Ответ

0 голосов
/ 09 ноября 2019

Программное обеспечение speedata поддерживает только небольшое подмножество XPath. У вас есть два варианта

  • : предварительная обработка данных с помощью прилагаемого процессора Saxon XSLT
  • . Итерирование данных самостоятельно:
<Layout xmlns="urn:speedata.de:2009/publisher/en"
   xmlns:sd="urn:speedata:2009/publisher/functions/en">

   <Record element="export">
        <ForAll select="object/fields/field">
            <Switch>
                <Case test="@key='demo1:DISPLAY_NAME' and @lang='de_DE' and @origin='default'">
                    <SetVariable variable="whatever" select="."/>
                </Case>
            </Switch>
        </ForAll>
        <Message select="$whatever"></Message>
   </Record>
</Layout>

(с учетом вашего вводафайл как data.xml)

...