XSLT: как объединить значение в трех элементах xml в четвертый элемент на том же уровне и сохранить другие элементы

Новый, упрощенный ответ на старый, часто задаваемый вопрос ...

Упрощенное исключение XML

  1. Всегда (90% важно запомнить) Escape < как <, если только < не запускает . Escape & как &, если только & не запускает &entity; .
  2. Значения атрибутов (9% важно запомнить) attr=" ' Одиночные кавычки ' в пределах двойных кавычек. " attr=' " Двойные кавычки " в порядке одинарной кавычки. ' В противном случае " выбрано как " и ' как '.
  3. Комментарии , CDATA и Инструкции по обработке (важно помнить о 0,9%) ничего не должно быть экранировано, но никакие строки -- не разрешены. В CDATA ]]> ничего не должно быть экранировано, но никакие строки ]]> не разрешены. В PIs ?> ничего не должно быть экранировано, но никакие строки ?> не разрешены.
  4. Esoterica (0.1% важно запомнить) Escape ]]> как ]]>, если только ]]> не закончит раздел CDATA. (Это правило применяется к символьным данным вообще, даже вне секции CDATA.)

0
задан Batar 16 January 2019 в 15:11
поделиться

1 ответ

Попробуйте это так:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:edocu="http://www.edocu.com"
exclude-result-prefixes="edocu">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:variable name="new-namespace" select="concat('http://www.asdf.no/eDocu/', //edocu:eDocuID)"/>

<xsl:template match="*">
    <xsl:element name="{name()}" namespace="{$new-namespace}">
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>

<xsl:template match="edocu:address">
    <xsl:element name="address" namespace="{$new-namespace}">
        <xsl:apply-templates/>
        <xsl:element name="new_element" namespace="{$new-namespace}">
            <xsl:value-of select="edocu:address_Street"/>
            <xsl:value-of select="edocu:address_Number"/>
            <xsl:value-of select="edocu:address_Letter"/>
        </xsl:element>
    </xsl:element>
</xsl:template>

</xsl:stylesheet>
0
ответ дан michael.hor257k 16 January 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: