Dev:attributeSyntax: Difference between revisions

From railML 2 Wiki
Jump to navigation Jump to search
[unchecked revision][checked revision]
(XML Attributes: W3C Definitions, Usage in XML Parsers and Processors, Workaround)
 
({{mirror}})
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==  Correct Syntax for XML attributes (Delimiters) ==
{{mirror}}
 
Sometimes there is a little confusion about the correct XML syntax in attribute definitions. Which version is valid, which not?<br>
{{deu|Manchmal besteht Uneinigkeit über die richtige XML-Syntax für Attributdefinitionen. Welche der folgenden Varianten ist korrekt? Welche nicht?}}
 
# <element attribute='''"'''value'''"'''/>
# <element attribute='''<nowiki>'</nowiki>'''value'''<nowiki>'</nowiki>'''/>
 
[http://www.w3.org/TR/REC-xml W3C] gives us the answer: both are correct!<br>
{{deu|[http://www.edition-w3.de/TR/REC-xml W3C] gibt uns die Antwort: Beide Varianten sind korrekt!}}
 
=== Definitions in the W3C XML specification ===
 
The following definitions use [http://www.w3.org/TR/REC-xml/#sec-notation "a simple Extended Backus-Naur Form (EBNF) notation"].<br>
{{deu|Die folgenden Definitionen nutzen die [http://www.edition-w3.de/TR/REC-xml/#sec-notation "einfache erweiterte Backus-Naur Form (EBNF)]".}}
 
; [http://www.w3.org/TR/REC-xml/#NT-Attribute Definition 41] [http://www.edition-w3.de/TR/REC-xml/#NT-Attribute (de)]:
<blockquote>
Attribute ::= Name Eq AttValue<br>
"... the content of the AttValue (the text between the ' or " delimiters) as the attribute value."<br>
{{deu|"... der Inhalt des AttValue (der Text zwischen den '- oder "-Zeichen) der Attribut-Wert ist."}}
</blockquote>
 
; [http://www.w3.org/TR/REC-xml/#NT-AttValue Definition 10] [http://www.edition-w3.de/TR/REC-xml/#NT-AttValue (de)]:
<blockquote>
    AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'"
</blockquote>
 
These "simple EBNF" is quite a bit difficult to understand, irrespective of this it allows both quotation marks as attribute delimiters. But the use should be consistent for each attribute definition. You may not mix both for one attribute.<br>
{{deu|Diese "simple EBNF" ist schon ein bißchen schwierig zu verstehen, unabhängig davon erlaubt sie beide Arten von Anführungszeichen für Attributdefinitionen zu verwenden. Man muss sie aber konsistent einsetzen und darf nicht bei einer Attributdefinition beide verschieden für Anfang und Ende verwenden.}}
 
=== Usage in XML parsers and XML processors ===
 
Thus each XML parser has to "accept" both versions (according to the W3C standard).<br>
{{deu|Somit muss jeder XML-Parser beide Varianten akzeptieren und verarbeiten (wenn er standard-konform ist).}}
 
Despite this you cannot demand your XML processor to output a preferred delimiters' version. The XML processors' implementation decides about this syntax.<br>
{{deu|Demgegenüber kann man von einem XML-Prozessor keine bevorzugte Variante abverlangen. Die Ausgabesyntax in der XML-Datei ist im Programmcode des XML-Prozessors festgelegt.}}
 
From current experience has to be noted that XML files with "double quotes" as attribute delimiters are much more common than XML file with "single quotes".<br>
{{deu|Aus der Erfahrung sollte angemerkt werden, dass XML-Dateien mit "doppelten Anführungszeichen" in Attributdefinitionen sehr viel häufiger vorkommen als XML-Dateien mit "einfachen Anführungszeichen".}}
 
=== Workaround in case of problems with single quotation marks ===
 
If you have troubles with the "single quotes" version than pipe your XML file through the following simple tool:<br>
{{deu|Falls es Probleme mit den "einfachen Anführungszeichen" im gewünschten XML-Parser gibt, kann man die XML-Datei einfach durch folgendes Programm schicken:}}
 
<pre>tr '\047' '\042' <input-file.xml >output-file.xml</pre>
 
* It "translates" the character ' (047) into " (042).
: {{deu|Es "übersetzt" alle Zeichen ' (047) nach " (042).}}
* "input-file.xml" is your XML file with single quotes.
: {{deu|"input-file.xml" ist dabei die XML-Datei mit "einfachen Anführungszeichen".}}
* "output-file.xml" becomes your XML file with double quotes.
: {{deu|"output-file.xml" ist die zu erzeugende XML-Datei mit "doppelten Anführungszeichen".}}
 
This tool is very fast and doesn't get in troubles with really large uncompressed XML files.<br>
{{deu|Dieses Programm ist sehr schnell und hat keine Schwierigkeiten mit richtig großen unkomprimierten XML-Dateien.}}
 
But be aware that ''any'' character occurence will be changed:<br>
{{deu|Aber man sollte im Kopf behalten, dass wirklich _alle_ Zeichen, die in das Muster passen, ersetzt werden:}}
<blockquote>
; before {{deu|vorher}} : <name>King'''<nowiki>'</nowiki>'''s Cross St. Pancras</name>
; thereafter {{deu|nachher}} : <name>King'''"'''s Cross St. Pancras</name>
</blockquote>
 
But regardless of this - diacritics stay unchanged:<br>
{{deu|Demgegenüber bleiben "Diakritische Zeichen" unverändert:}}
<blockquote>
; before {{deu|vorher}} : <name>King'''’'''s Cross St. Pancras</name>
; thereafter  {{deu|nachher}}: <name>King'''’'''s Cross St. Pancras</name>
</blockquote>

Revision as of 20:47, 23 January 2020

🗒️ This page is mirrored from page Dev:attributeSyntax in The railML® 3 wiki.

[Template fetch failed for https://wiki3.railml.org/index.php?title=Dev:attributeSyntax&action=raw: HTTP 404]