XSLT преобразовывает пары имя-значение в соответствующий ему XML - PullRequest
2 голосов
/ 14 декабря 2011

Я новичок в XSLT. Я пытаюсь преобразовать пару имя-значение в соответствующий XML. Эта функция в основном используется в случае специальных расширений стандарта. Файл, который я хочу преобразовать, следующий. В любом из extNames.

пробелов не ожидается.
<?xml version="1.0" encoding="UTF-8"?>
<extensionItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:noNamespaceSchemaLocation="ExtensionItems.xsd">
<extensionsItem>
<extName> callCode</extName>
<extValue>1</extValue>
<extType>integer</extType>
</extensionsItem>
<extensionsItem>
<extName>callbackType</extName>
<extValue>All</extValue>
<extType>string</extType>
</extensionsItem>
<extensionsItem>
<extName>callbackEmail</extName>
<extValue>me@mine.org</extValue>
<extType>string</extType>
</extensionsItem>
</extensionItems>

к следующему:

<ODEventNotificationExtraField>
<callCode> 1</callCode>
<callbackType> All </callbackType>
<callbackEmail> me@mine.org </callbackEmail>
</ODEventNotificationExtraField>

1 Ответ

1 голос
/ 14 декабря 2011

Следующая таблица стилей дает желаемый результат:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
    <xsl:template match="extensionItems">
        <ODEventNotificationExtraField>
            <xsl:apply-templates/>
        </ODEventNotificationExtraField>
    </xsl:template>
    <xsl:template match="extensionsItem">
        <xsl:element name="{extName}">
            <xsl:value-of select="extValue"/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...