Как комментировать в XSLT, а не в HTML - PullRequest
39 голосов
/ 10 декабря 2010

Я пишу XSL и хочу сделать комментарии по всему коду, которые будут удалены при обработке, например, PHP, однако я не уверен, как.

Я знаю об объекте комментария, но он печатает комментарий HTML при обработке.: \

<xsl:comment>comment</xsl:comment>

Ответы [ 4 ]

88 голосов
/ 10 декабря 2010

Вы используете стандартные комментарии XML:

<!-- Comment -->

Они не обрабатываются преобразователем XSLT.

13 голосов
/ 16 июня 2011

Просто убедитесь, что вы положили <!-- comments --> ПОСЛЕ начальную декларацию XML (если вы используете такую, которая вам действительно не нужна):

BREAKS:

<!-- a comment -->
<?xml version="1.0"?>

РАБОТАЕТ:

<?xml version="1.0"?>
<!-- a comment -->

Я немного почесал голову над этой же проблемой, пока отлаживал чужой XSLT ... кажется очевидным, но легко игнорируемым.

2 голосов
/ 20 ноября 2013

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

EG

<xsl:for-each select="someTag">
  <xsl:text>"</xsl:text>
    <!-- output the id -->
<xsl:value-of select="@id"/>
<xsl:text>"</xsl:text>
</xsl:for-each>

Выводит «someTagID» (выводится вкладка / пробел перед тегом комментария). Чтобы удалить, удалите отступ с левого поля или заключите его в скобки как

<xsl:text>"</xsl:text><!-- output the id --><xsl:value-of select="@id"/>
0 голосов
/ 10 декабря 2010

Конечно.Прочитайте http://www.w3.org/TR/xslt#built-in-rule и тогда должно быть понятно, почему эта простая таблица стилей будет (ну, должна) делать то, что вы хотите:

<?xml version="1.0"?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="comment()">
  <xsl:copy/>
</xsl:template>

<xsl:template match="text()|@*"/>

</xsl:stylesheet>

Попробуйте:

<xsl:template match="/">
  <xsl:for-each select="//comment()">
   <SRC_COMMENT>
   <xsl:value-of select="."/>
   </SRC_COMMENT>
  </xsl:for-each>
 </xsl:template>
or use a <xsl:comment ...> instruction for a more literal duplication of the source     document content in place of my <SRC_COMMENT> tag.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...