XML / XSL - jak wrzucić element do komentarza

Odpowiedz Nowy wątek
2016-08-26 15:53

Rejestracja: 3 lata temu

Ostatnio: 3 lata temu

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

edytowany 2x, ostatnio: furious programming, 2016-08-27 01:07
Wstawiaj kod w znaczniki kolorujące składnię, czyli &lt;code=xml&gt; - furious programming 2016-08-27 01:07

Pozostało 580 znaków

2016-08-26 20:10

Rejestracja: 6 lat temu

Ostatnio: 7 godzin temu

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

Pozostało 580 znaków

2016-08-27 02:24

Rejestracja: 9 lat temu

Ostatnio: 1 godzina temu

1

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

Pozostało 580 znaków

2016-08-29 18:07

Rejestracja: 3 lata temu

Ostatnio: 3 lata temu

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

Pozostało 580 znaków

2016-08-30 09:08

Rejestracja: 9 lat temu

Ostatnio: 1 godzina temu

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>

Pozostało 580 znaków

Odpowiedz

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