XSLT для динамического тега, переданного из программы Java

1

Мое требование - преобразование XML A в XML B. Тег, в котором я читал из XML A, должен быть настраиваемым, это своего рода идентификация списков. Если в XML-документе присутствует какой-либо новый тег, его следует использовать путем добавления записей в файл конфигурации для Java и программно, что, в свою очередь, должно быть отражено в XSLT и преобразовано в XML B.

Я использую Java. Можно ли пропустить параметры? поскольку мое требование требует, чтобы параметры передавались в цикле или в списке.

Я новичок в XSLT, и вся информация по этому поводу будет очень оценена.

Источник XML. Здесь может быть больше, например, ежегодно, еженедельно и т.д.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Report>
    <Daily>
        <input>1234</input>
    </Daily>
    <Monthly>
        <input>8678</input>
    </Monthly>  
</Report>

Целевой XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Report>
    <Value>
        <Attribute>
            <name>Daily</name>
            <values>1234</values>
        </Attribute>
        <Attribute>
            <name>Monthly</name>
            <values>8678</values>
        </Attribute>
    </Value>
</Report>
  • 0
    Можете ли вы предоставить пример или A, который вы хотите получить в B и пример B ..
  • 0
    @KennethClark Спасибо за ответ. Добавлен пример.
Показать ещё 1 комментарий
Теги:
xslt
xalan
jaxp

1 ответ

1

Вы можете использовать функцию name() или local-name() для выбранного в данный момент узла.

Узнайте, как выбрать имя текущего элемента в XSLT

Здесь набросок кода:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/Report/">
        <Value>
        <xsl:for-each select="*">
            <Attribute>
                <name>
                    <xsl:value-of select="name()"/>
                </name>
                <values>
                    <xsl:value-of select="./input"/>
                </values>
            </Attribute>
        </xsl:for-each>
        </Value>
    </xsl:template>
</xsl:stylesheet>
  • 0
    Как это отвечает на вопрос? Речь идет не о поиске имени элемента контекста.
  • 0
    @ MathiasMüller OP хочет преобразовать <Daily> в <name>Daily</name> . Ему нужно определить текущее имя узла и использовать его в <xsl:element> .
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню