Как создать динамическое значение?
Это так:
1) Мы получаем XML-экспорт из системы A.
2) Мы выбираем иотформатировать некоторые данные, необходимые для системы B.
3) Одно из переданных полей необходимо объединить из нескольких элементов исходного XML.
Объединенные элементы можно настроить с помощьюклиент.
Итак, теперь у меня есть следующее:
XSLT для преобразования XML из системы A
Простой XML-файл конфигурации, где клиент может указать, какие поля он хочет объединить впоследовательный путь:
<items>
<field type="field">field1</field>
<field type="text">whatever the customer wants between the combined fields</field>
<field type="field">field2</field>
<field type="text">whatever the customer wants between/after the combined fields</field>
<field type="field">field3</field>
</items>
пример этого XML будет переводить в:
<field1>, <field2> and <field3> or <field1>+<field2>=<field3>
В моем xslt у меня есть это:
<xsl:variable name="configfile" select="document(myconfigxml.xml)"/>
Затем я использую xsltциклически перебирать типы полей и где @ type = 'field' Я хочу использовать значение поля для просмотра элемента исходного XML.
<xsl:template name="items">
<xsl:param name="personElementFromSourceXml"/>
<xsl:for-each select="$configfile/items/field">
<xsl:choose>
<xsl:when test="@type='field'">
<xsl:value-of select="???"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Что мне нужно будет набрать наместо ????В псевдо-xslt это будет $personElementFromSourceXml/value-of-<field1-2-3>
Я пробовал несколько вещей, таких как concat ($ personElementFromSourceXml, '/', current ()), пробовал $ personElementFromSourceXml / current (), но они не работают.
Кроме того, небольшая проверка здравомыслия: является ли моя идея решения этой проблемы нормальным подходом или я нарушаю все правила в книге?Обратите внимание, я все еще новичок в xslt.