Как мне сохранить теги разметки? - PullRequest
17 голосов
/ 02 октября 2008

У меня есть документ XML, содержащий новости, а элемент body новости содержит p тегов среди простого текста. Когда я использую XSL для извлечения тела, например

<xsl:value-of select="body" />

теги p, похоже, удалены. Я использую XSL в Visual Studio 2005.

У кого-нибудь есть идеи, как этого избежать? Спасибо.

Ответы [ 5 ]

24 голосов
/ 02 октября 2008

Попробуйте использовать

<xsl:copy-of select="body"/>

вместо этого. Из документации w3schools на тот же :

Элемент <xsl:copy-of> создает копия текущего узла.

Примечание: узлы пространства имен, дочерние узлы, и атрибуты текущего узла также автоматически копируется!

4 голосов
/ 02 октября 2008

Если у вас нет контроля над входным документом, копирование должно работать:

С http://www.xml.com/pub/a/2000/06/07/transforming/index.html

"Элемент xsl: copy-of, с другой стороны, может копировать все поддерево каждого узла, который выбирает шаблон. Это включает атрибуты, если атрибут select элемента xsl: copy-of имеет соответствующее значение. В следующем примере шаблон копирует узлы элемента заголовка и все их дочерние узлы - другими словами, полные элементы заголовка, включая их теги, подэлементы и атрибуты: "

<xsl:template match="title">
  <xsl:copy-of select="*"/>
</xsl:template>
1 голос
/ 02 октября 2008

Значение элемента XML - это верно не только в XSLT, но и в реализациях DOM - это объединение всех его дочерних текстовых узлов. В XSLT value-of испускает значение элемента, в то время как copy-of испускает копию элемента.

1 голос
/ 02 октября 2008

Если у вас есть контроль над входным документом, CDATA - правильный путь.

0 голосов
/ 02 октября 2008

Это потому, что движок интерпретирует тег

(исключая его для вывода). Вам нужно указать, что вы хотите, чтобы содержимое было «как есть», используя атрибут «disable-output-escaping = yes | no».

<xsl:value-of select="body" disable-output-escaping="yes"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...