раскомментировать содержимое XML с помощью XSLT - PullRequest
4 голосов
/ 07 января 2010

У меня проблема с XML и XSLT. У меня есть один XML-файл с комментариями, и я хочу раскомментировать его.

Например:

<my-app>
 <name>
 </name>
  <!-- <class>
         <line></line>
   </class>-->
</my-app>

Я хочу раскомментировать этот комментарий.

Ответы [ 2 ]

11 голосов
/ 07 января 2010
<!-- the identity template copies everything 
     (unless more specific templates apply) -->
<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

<!-- this template matches comments and uncomments them -->
<xsl:template match="comment()">
  <xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>

Помните, что disable-output-escaping="yes" подразумевает, что содержимое комментария должно быть правильно сформировано.

2 голосов
/ 12 июня 2012

Если использовать Saxon, saxon: parse () будет чище, потому что он создает реальную структуру XML. saxon: parse ($ xml as xs: string) ==> document-node () В элементе xsl: stylesheet добавьте xmlns: saxon = http://saxon.sf.net/

Пример:

<xsl:template match="comment()">
    <xsl:variable name="comment" select="saxon:parse(.)" as="document-node()"/>
    <xsl:copy-of select="$comment"/>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...