XSLT-1.0 Установка имени узла в качестве значения в другом узле - PullRequest
0 голосов
/ 04 октября 2018

Я забавляю xslt-1.0 для преобразования ниже input.xml в output.xml.Я сталкиваюсь с трудностями в получении имени узла в качестве значения для другого узла.Пожалуйста, найдите ниже input.xml и помогите мне получить output.xml.Заранее спасибо.

Обратите внимание, что некоторые значения узлов являются данными форматированного текста, а некоторые - нет.

input.xml:

<Presentation>
<MainDescription>
    <![CDATA[
        <p>Line1 The main description text goes here.</p>
        <p>Line2 The main description text goes here.</p>
        <p><img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166.jpg" width="322" height="100"/></p>
    ]]>
</MainDescription>
<KeyConsiderations>
    <![CDATA[
        <p>Line1 The key consideration text goes here.</p>
        <p><img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166.jpg" width="322" height="100"/></p>
        <p>Line2 The key consideration text goes here.</p>
    ]]>
</KeyConsiderations>
<Skills>
    <p>Line1 The Skills text goes here.</p>
    <p>Line2 The Skills text goes here.</p>
    <p>Line3 The Skills text goes here.</p>
</Skills>
<Synonyms>
    <p>The Synonyms text goes here.</p>
</Synonyms>
</Presentation>

output.xml:

<ATTRIBUTE-VALUE>
    <THE-VALUE>
        <div xmlns="http://www.w3.org/1999/xhtml">
            <h1>Main Description</h1>
               <p>Line1 The main description text goes here.</p>
               <p>Line2 The main description text goes here.</p>
               <p><img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166?accept=none&amp;private" width="322" height="100"/></p>
            <h1>Key Consideration</h1>
               <p>Line1 The key consideration text goes here.</p>
               <p><img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166?accept=none&amp;private" width="322" height="100"/></p>
               <p>Line2 The key consideration text goes here.</p>
            <h1>Skills</h1>
               <p>Line1 The Skills text goes here.</p>
               <p>Line2 The Skills text goes here.</p>
               <p>Line3 The Skills text goes here.</p>
            <h1>Synonyms</h1>
               <p>The Synonyms text goes here.</p>
        </div>
    </THE-VALUE>
</ATTRIBUTE-VALUE>

1 Ответ

0 голосов
/ 05 октября 2018

Похоже, вы хотите удалить содержимое этих элементов.Это можно сделать с помощью disable-output-escaping - если ваш XSLT-процессор поддерживает его (обычно встроенные в браузеры процессоры не поддерживают автономные процессоры).

Например, этот шаблон:

<xsl:template match="MainDescription">
    <h1>Main Description</h1>
    <xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>

превратит <MainDescription> из вашего образца в:

<h1>Main Description</h1>

        <p>Line1 The main description text goes here.</p>
        <p>Line2 The main description text goes here.</p>
        <p><img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166.jpg" width="322" height="100"/></p>

Создайте больше таких шаблонов для других элементов.


Без disable-output-escaping, вывод шаблонабыло бы так:

<h1>Main Description</h1>

        &lt;p&gt;Line1 The main description text goes here.&lt;/p&gt;
        &lt;p&gt;Line2 The main description text goes here.&lt;/p&gt;
        &lt;p&gt;&lt;img alt="" src="_9c3778a0-d596-4eef-85fa-052a5e1b2166.jpg" width="322" height="100"/&gt;&lt;/p&gt;

, что на 100% эквивалентно начальному разделу CDATA, это просто еще один способ написать это.Кстати, это не «форматированный текст».Это текст, не более того.Текст, содержащий несколько угловых скобок.

...