Как скопировать содержимое элемента, а не только строку? - PullRequest
0 голосов
/ 04 мая 2011

Мой XML имеет некоторые стили внутри.Результат преобразования XslCompiledTransform приводит к HTML, который не имеет этих тегов стиля.Есть ли какой-нибудь способ сказать XslCompiledTransform сохранить их?или XslCompiledTransform должен сохранять их по умолчанию?

вот мой xml

> <codeSnippetFull>
>         <span class="kwrd">event</span> 
>         OnCreate {
>         <span class="kwrd">if</span>
>              (Count == 0)
>                   AddE(D); <span class="rem">//  comment </span>
>         }
>        </codeSnippetFull>

мой xslt просто вытаскивает весь элемент

         <xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

вот мой C #, я 'Мы не применяем ничего, кроме примененных по умолчанию:

 // Load the style sheet. 
 XslCompiledTransform xslt = new XslCompiledTransform();
 xslt.Load(args[0]);

......
         xslt.Transform(xmlFileName, Path.Combine(htmlOutputPath, Path.GetFileNameWithoutExtension(xmlFileName) + ".html"));

Причина, по которой я не делаю стилизацию из xslt, заключается в том, что блок может иметь и количество примененных стилей, смешанных со случайным текстом.Это стиль определенных слов в параграфах.

1 Ответ

1 голос
/ 04 мая 2011

Ваш XSLT-код

<xsl:value-of select="THelpDocument/HelpBody/example/codeSnippetFull"/>

на самом деле не копирует (разметку) содержимое элемента <codeSnippetFull>. <xsl:value-of> используется для создания текстовых узлов . Value-of преобразует выбранный узел в строку. Строковое значение элемента - это конкатенация текстовых узлов, которые являются потомками выбранного элемента. Строковое значение набора узлов (например, несколько выбранных элементов) является строковым значением первого узла в наборе.

Для копирования элементов в XSLT вы можете использовать

  1. <xs:copy>, который копирует выбранный узел, но не его атрибуты или дочерние элементы
  2. <xs:copy-of>, который копирует весь выделенный фрагмент XML (= также все потомки и атрибуты)
  3. шаблон идентификации, то есть рекурсивный шаблон с <xs:copy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...