von Kaleun » Mo 27. Jan 2020, 19:26
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?
\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
Vielen Dank im Voraus.
Viele Grüße
Kaleun
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 [b]maroon[/b] dargestellt werden. Die Attribute sollen in der Farbe [b]red[/b] und die entsprechenden Werte in der Farbe [b]blue[/b] sein. Inhalte von Elementen (z.B. cU2+NwsKcGNmkhfZGyh1Zv6Lq7yFmbYpskR2/4G4NZM= im ersten <DigestValue> Element) sollen in der Farbe [b]black[/b] sein. Kommentare sollen in der Farbe [b]darkolivegreen[/b] 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 [url=https://ctan.org/pkg/listings?lang=de]listings[/url] angeschaut, allerdings wurde ich daraus nicht wirklich schlau und meine Fragen blieben unbeantwortet. Ich verstehe nicht ganz wie ich mit dem Befehl [tt]moredelim[/tt] umgehen muss.
[list]Was bedeutet der Parameter [tt]s[/tt]?
Was bedeutet der Parameter [tt]l[/tt]?
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 [tt]moredelim[/tt] Befehl.
Ich habe irgendwo mal [tt]\ [/tt] 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?[/list]
[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}[/code]
Folgendes wird in diesem Beispiel noch falsch dargestellt:
[list]Der Inhalt des Elements [tt]<SignatureValue>[/tt] sollte [b]black[/b] sein (nur manche Zahlen und Sonderzeichen sind [b]black[/b]).
Der Inhalt des Elements [tt]<X509IssuerName>[/tt] sollte [b]black[/b] sein.
Der Inhalt des Elements [tt]<X509Certificate>[/tt] sollte [b]black[/b] sein.
Der Inhalt des Elements [tt]<X509SerialNumber>[/tt] sollte [b]black[/b] sein.[/list]
Es würde mir auch schon helfen, wenn mir einige der Fragen beantwortet werden :) Vielen Dank im Voraus.
Viele Grüße
Kaleun