goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 101745
Top-Poster: Johannes_B (5072)

Wir begrüßen unseren neuesten Benutzer localhorst.

Links:


Mit Unterstützung von DANTE e.V.: Deutschsprachige Anwendervereinigung TeX. Danke den Mitgliedern!





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Syntax-Highlighting für XML

 

Kaleun
Forum-Anfänger
Forum-Anfänger

Beiträge: 18
Anmeldedatum: 15.10.19
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 27.01.2020, 20:26     Titel: Syntax-Highlighting für XML
  Antworten mit Zitat      
Hallo,

ich habe eine Frage bzgl. selbstdefinierter Syntax-Highlighting Trennzeichner in Bezug auf XML. Mein Ziel ist es, dass alle Start- und Ende-Tags inkl. der Elementbezeichnungen in der Farbe maroon dargestellt werden. Die Attribute sollen in der Farbe red und die entsprechenden Werte in der Farbe blue sein. Inhalte von Elementen (z.B. cU2+NwsKcGNmkhfZGyh1Zv6Lq7yFmbYpskR2/4G4NZM= im ersten <DigestValue> Element) sollen in der Farbe black sein. Kommentare sollen in der Farbe darkolivegreen dargestellt werden.

Einiges habe ich schon hinbekommen, allerdings werden die Inhalte der Elemente noch falsch dargestellt.

Ich habe mir dazu mal die Dokumentation zu dem Paket listings angeschaut, allerdings wurde ich daraus nicht wirklich schlau und meine Fragen blieben unbeantwortet. Ich verstehe nicht ganz wie ich mit dem Befehl moredelim umgehen muss.

    Was bedeutet der Parameter s?
    Was bedeutet der Parameter l?
    Welche Syntax muss ich beachten?
    Gibt es die Möglichkeit Reguläre Ausdrücke (regular expressions) zu verwenden? Wenn ja, wo finden ich eine gute Übersicht über diese zur Anwendung auf den moredelim Befehl.
    Ich habe irgendwo mal \ als Trennzeichen gesehen, was bedeutet das?
    Durch welches Argument schaffe ich es, dass die Farbe auch auf die Trennzeichen angewendet wird und wie ohne Anwendung auf die Trennzeichen?



Code
\RequirePackage{fix-cm,cmap}

\documentclass[
fontsize=11pt,
paper=a4,
abstract=true,
numbers=noenddot,
listof=totoc,
bibliography=totoc,
twoside,
open=right,
cleardoublepage=plain,
parskip=half+,
BCOR=1cm,
]{scrreprt}


\usepackage{color}
\definecolor{maroon}{rgb}{0.5, 0.0, 0.0}
\definecolor{darkolivegreen}{rgb}{0.33, 0.42, 0.18}
\usepackage{caption}
\usepackage{listings}
\lstdefinelanguage{XML}
{
   basicstyle=\ttfamily\footnotesize,
   morestring=[b]",
   moredelim=[s][\bfseries\color{maroon}
]{<}{\ },
   moredelim=[s][\bfseries\color{maroon}]{</}{>},
   moredelim=[l][\bfseries\color{maroon}]{/>},
   moredelim=[l][\bfseries\color{maroon}]{>},
   morecomment=[s]{<?}{?>},
   morecomment=[s]{<!--}{-->},
   commentstyle=\color{darkolivegreen},
   stringstyle=\color{blue},
   identifierstyle=\color{red},
   numbers=left,
   tabsize=2,
   frame=single,
   rulecolor=\color{black},
   breaklines=true,
   captionpos=b
}
\begin{document}
\renewcommand{\lstlistingname}{XML-Fragment}
\begin{lstlisting}[language={XML}, caption={Inhalt der documentsignatures.xml}]
<?xml version="1.0" encoding="UTF-8"?>
<document-signatures xmlns="urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0">
   <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="ID_006900630020002d0084000e004a008b009b00a6006f004b007c007b002d007f">
      <SignedInfo>
         <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
         <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
         <Reference URI="mimetype">
            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
            <DigestValue>cU2+NwsKcGNmkhfZGyh1Zv6Lq7yFmbYpskR2/4G4NZM=</DigestValue>
         </Reference>
         <Reference URI="styles.xml">
            <Transforms>
               <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
            <DigestValue>jj4tjq2F2K2b0ytav0dZOqjwszvSlbERnRjYiBBfPDU=</DigestValue>
         </Reference>
         <Reference URI="manifest.rdf">
            <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
            <DigestValue>rrKXmEsmowvZom8wSzm8fZGiZFdJs1578/RMS5UR3HU=</DigestValue>
         </Reference>
      </SignedInfo>
      <SignatureValue>
         geVgO5aL1dtiJDMtQbUL8WxI+iNicTmLSmZP7bLNdUm3wyWfxAl9HPzGDjm56RS9
         uAXxEVhjNT6siKDuVja+/gUa5Kpd/J2L1ww47FSH1DYBJmdIxbP3S7Hb5yvPKGBO
         GjBFJ6/VHfcO1dgAirhNwbmavIE1gxa0nTTrWzv0U6PAJKFvyFyCHhFGHzbzrNta
         oZwQL7Y4h3w32rZ+LFmHLafGF+7+Fg8v/z7zsQW2kCHU/JTM0yWWsTspNvDakgMo
         SNpYs+Zm4Ma6o/d3tQN2WxodkVN92WJHzkXJDSbOi8H7de/NRTXSZUvoyf9azMbH
         Yg3FIGYJQH589yektZAW0A==
      </SignatureValue>
      <KeyInfo>
         <X509Data>
            <X509IssuerSerial>
               <X509IssuerName>E=vorname.nachnamejahreszahl@provider.com, CN=Vorname Nachname, OU=Management, O=Unternehmen, L=Stadt, ST=Bundesland, C=DE</X509IssuerName>
               <X509SerialNumber>13894744055819454397</X509SerialNumber>
            </X509IssuerSerial>
            <X509Certificate>
               Ich bin ein langer Inhalt
               ueber mehrere
               Zeilen
            </X509Certificate>
         </X509Data>
      </KeyInfo>
      <Object>
         <SignatureProperties>
            <SignatureProperty Id="ID_00dd00f400e600f400e700c1004e003b0081006400f800f5006c009a00630055" Target="#ID_006900630020002d0084000e004a008b009b00a6006f004b007c007b002d007f">
               <dc:date xmlns:dc="http://purl.org/dc/elements/1.1/">2020-01-07T17:07:45.717000000</dc:date>
            </SignatureProperty>
         </SignatureProperties>
      </Object>
      <Object xmlns:xd="http://uri.etsi.org/01903/v1.3.2#">
         <xd:QualifyingProperties Target="#ID_006900630020002d0084000e004a008b009b00a6006f004b007c007b002d007f">
            <xd:SignedProperties Id="idSignedProperties">
               <xd:SignedSignatureProperties>
                  <xd:SigningTime>2020-01-07T17:07:45.717000000</xd:SigningTime>
                  <xd:SigningCertificate>
                     <xd:Cert>
                        <xd:CertDigest>
                           <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                           <DigestValue>DrwbD6rQTszEZxlSXSNDV7MdHnWi2K0XaT7Dwz5xnJ4=</DigestValue>
                        </xd:CertDigest>
                        <xd:IssuerSerial>
                           <X509IssuerName>E=vorname.nachnamejahreszahl@provider.com, CN=Vorname Nachname, OU=Management, O=Unternehmen, L=Stadt, ST=Bundesland, C=DE</X509IssuerName>
                           <X509SerialNumber>13894744055819454397</X509SerialNumber>
                        </xd:IssuerSerial>
                     </xd:Cert>
                  </xd:SigningCertificate>
                  <xd:SignaturePolicyIdentifier>
                     <xd:SignaturePolicyImplied/>
                  </xd:SignaturePolicyIdentifier>
               </xd:SignedSignatureProperties>
            </xd:SignedProperties>
            <xd:UnsignedProperties Id="idUnsignedProperties">
               <xd:UnsignedSignatureProperties>
                  <xd:CertificateValues>
                     <xd:EncapsulatedX509Certificate>
                        Ich bin ein langer Inhalt.
                     </xd:EncapsulatedX509Certificate>
                  </xd:CertificateValues>
               </xd:UnsignedSignatureProperties>
            </xd:UnsignedProperties>
         </xd:QualifyingProperties>
      </Object>
   </Signature>
</document-signatures>
\end{lstlisting}
\end{document}


Folgendes wird in diesem Beispiel noch falsch dargestellt:
    Der Inhalt des Elements <SignatureValue> sollte black sein (nur manche Zahlen und Sonderzeichen sind black).
    Der Inhalt des Elements <X509IssuerName> sollte black sein.
    Der Inhalt des Elements <X509Certificate> sollte black sein.
    Der Inhalt des Elements <X509SerialNumber> sollte black sein.


Es würde mir auch schon helfen, wenn mir einige der Fragen beantwortet werden Smile Vielen Dank im Voraus.

Viele Grüße

Kaleun
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2020, 12:11     Titel:
  Antworten mit Zitat      
listings kennt übrigens bereits eine Sprache XML, deren Originaldefinition derzeit in lstlang1.sty zu finden ist. Bist du sicher, dass du eine Sprache XML definieren willst und nicht nur einen neuen Stil, also beispielsweise \tagstyle ändern, eventuell keywords erweitern etc.?

Der type-Parameter s steht jedenfalls für einen Kommentar und erwartet zwei obligatorische Argumente. Das erste ist der Anfang des Kommentars, das zweite das Ende. Solche Kommentare können nicht geschachtelt werden.

Der type-Parameter l steht dagegen für einen Kommentar, der mit dem als einziges obligatorisches Argument angegebenen String beginnt und am Ende der Zeile automatisch endet.

Der type-Parameter b gibt Anfang und Ende eines Strings an, bei den im Fall, dass dieses Zeichen selbst im String vorkommen soll, es mit einem Backslash eingeleitet werden muss. Es gibt auch d-Strings, bei denen das Zeichen verdoppelt wird, wenn es im String vorkommt.

Sorry, aber das mehr als längliche Beispiel habe ich mir nicht näher angeschaut.

Kaleun
Forum-Anfänger
Forum-Anfänger

Beiträge: 18
Anmeldedatum: 15.10.19
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 29.01.2020, 12:26     Titel:
  Antworten mit Zitat      
Zitat:
listings kennt übrigens bereits eine Sprache XML, deren Originaldefinition derzeit in lstlang1.sty zu finden ist. Bist du sicher, dass du eine Sprache XML definieren willst und nicht nur einen neuen Stil, also beispielsweise \tagstyle ändern, eventuell keywords erweitern etc.?

Das hab ich mal versucht, allerdings erhielt ich hierbei die Fehlermeldung:
! TeX capacity exceeded, sorry [input stack size=5000].<to be read again>
Ich habe hierzu mal ein verkürztes Minimalbeispiel:
Code
\RequirePackage{fix-cm,cmap}

\documentclass[
fontsize=11pt,
paper=a4,
abstract=true,
numbers=noenddot,
listof=totoc,
bibliography=totoc,
twoside,
open=right,
cleardoublepage=plain,
parskip=half+,
BCOR=1cm,
]{scrreprt}


\usepackage{color}
\definecolor{maroon}{rgb}{0.5, 0.0, 0.0}
\definecolor{darkolivegreen}{rgb}{0.33, 0.42, 0.18}
\usepackage{caption}
\usepackage{listings}
\lstdefinelanguage{XML}
{
   language=xml,
   numbers=left,
   tabsize=2,
   frame=single,
   rulecolor=\color{black
},
   breaklines=true,
   captionpos=b
}
\begin{document}
\renewcommand{\lstlistingname}{XML-Fragment}
\begin{lstlisting}[language={XML}, caption={Inhalt der documentsignatures.xml}]
<?xml version="1.0" encoding="UTF-8"?>
\end{lstlisting}
\end{document}

Das mit den Parametern muss ich mal praktisch testen, vielen Dank auf jeden Fall Smile
Private Nachricht senden Benutzer-Profile anzeigen

Kaleun
Forum-Anfänger
Forum-Anfänger

Beiträge: 18
Anmeldedatum: 15.10.19
Wohnort: Bochum
Version: ---
     Beitrag Verfasst am: 29.01.2020, 13:05     Titel:
  Antworten mit Zitat      
Hab jetzt was gefunden mit dem es fast perfekt ist:
Code
\lstset{
   basicstyle=\ttfamily,
   columns=fullflexible,
   showstringspaces=false,
   commentstyle=\color{darkolivegreen
}\upshape
}

\lstdefinelanguage{XML}
{
   basicstyle=\ttfamily\footnotesize,
   morestring=[b]",
   morecomment=[s]{<?
}{?>},
   morecomment=[s]{<!--}{-->},
   commentstyle=\color{darkolivegreen},
   moredelim=[s][\color{black}]{>}{<},
   stringstyle=\color{blue},
   identifierstyle=\color{maroon},
   keywordstyle=\color{red},
   numbers=left,
   tabsize=2,
   frame=single,
   rulecolor=\color{black},
   breaklines=true,
   captionpos=b,
   morekeywords={xmlns, version, type, Algorithm, URI, Id, Target}% list your attributes here
}

Das einzige was ich jetzt noch in einer anderen Farbe darstellen möchte, sind die Zeichen
    <
    >
    </
    />

Weiß jemand wie ich das hinbekomme?
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2020 goLaTeX.de