XML / XSL - jak wrzucić element do komentarza

0
<?xml version="1.0" ?>
<persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons>

czy ktoś wie jakiej transformaty użyć - jak powinien wyglądać plik xsl - żeby taką wiadomość przekonwertował na takiego xml'a :

<!--

<persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons>

-->

czyli po prostu żeby wiadomość oryginalną wrzucił do komentarza

1

prymitywne doklejanie początku i końca komentarza działa

>marek2:~/workspace/xsl $ ls
1.xml  1.xsl
marek2:~/workspace/xsl $ cat 1.xml 
<?xml version="1.0" ?>
<persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons>

marek2:~/workspace/xsl $ cat 1.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="utf-8" indent="no"/>

<xsl:variable name="c1">
  <xsl:text disable-output-escaping="yes">&lt;!-- </xsl:text>
</xsl:variable>
<xsl:variable name="c2">
  <xsl:text disable-output-escaping="yes"> --&gt;</xsl:text>
</xsl:variable>

<xsl:template match="/">
  <xsl:copy-of select="$c1" />
    <xsl:copy-of select="*"/>
  <xsl:copy-of select="$c2" />
</xsl:template>

</xsl:stylesheet>

marek2:~/workspace/xsl $ xsltproc 1.xsl 1.xml 
<?xml version="1.0" encoding="utf-8"?>
<!-- <persons>
  <person username="JS1">
    <name>John</name>
    <family-name>Smith</family-name>
  </person>
  <person username="MI1">
    <name>Morka</name>
    <family-name>Ismincius</family-name>
  </person>
</persons> -->marek2:~/workspace/xsl $ xsltproc -V
Using libxml 20901, libxslt 10128 and libexslt 817
xsltproc was compiled against libxml 20901, libxslt 10128 and libexslt 817
libxslt 10128 was compiled against libxml 20901
libexslt 817 was compiled against libxml 20901
1

a nie lepiej uzyc xsl:comment do oblozenia wyniku zamiast tworzyc zmienne?

0

xsl:comment właśnie by się nadał ale nie wiem jak to zrobić żeby całego xml'a do tego wrzucić bo ten wejściowy xml nie zawsze będzie taki sam

0

sprawdzilem i xsl comment jakos krzywo dziala, wiec generalnie podejscie jak reptile333 zaproponowal: robisz templatektory matchuje sie na roocie dokumentu i w nim wpisujesz tagi w ktore chcesz oblozyc dokument a w srodku tych tagow wywolujesz "identity tranformation" .

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:output method="xml" encoding="utf-8" indent="yes"/>
  
  <xsl:template match="/">
    <xsl:text disable-output-escaping="yes">&lt;!-- </xsl:text>
      <xsl:copy-of select="@*|node()"/>
    <xsl:text disable-output-escaping="yes"> --&gt;</xsl:text>
  </xsl:template>
 
</xsl:stylesheet>

1 użytkowników online, w tym zalogowanych: 0, gości: 1