Comments (3)
Original comment by Thomas Schraitle (Bitbucket: tomschr, GitHub: tomschr)
Hallo Jürgen,
ich habe im Branch rng_schema. Damit angefangen ein Schema für das Zwischenformat zu erstellen:
Cool, dann hatten wir die selbe Idee. ;-))
Vielleicht können wir das unsere beiden Erkenntnisse zusammenführen.
Die Änderungen klingen für mich plausibel.
Das ist schön. :-)
Ich bin mir nachwievor noch nicht ganz im Klaren, was ein gute XML-Struktur ausmacht und worauf ich achten muss, daher sind Vorschläge sehr willkommen.
Eine gute XML-Struktur zu entwerfen kann manchmal schwierig werden.
Woran ich mich orientiere sind meist folgende Punkte:
-
Attribut vs. Element?
Das war (früher?) immer ein großes Streitthema. Hing vermutlich mit der DTD zusammen, die nur in Attributen rudimentäre Datentypen erlaubt, in Elementen jedoch nicht. Mittlerweile ist es durch XSD und RNG nicht mehr so wichtig.
Sind manche Informationen optional? -
Maschine vs. Mensch?
Manche machen einen Unterschied ob die XML-Struktur nur von Maschinen gelesen wird oder ob sie auch ein Mensch zu Gesicht bekommt. Ich denke trotzdem, irgendein Entwickler wird die Struktur dennoch lesen (müssen) um sinnvolle Verarbeitungen machen zu können.
-
Dokumentation vs. Markup?
Eine XML-Struktur sollte möglichst so sprechende Namen haben, dass man den Sinn, Zweck und Inhalt erraten kann. Ohne irgendeine Referenz-Dokumentation gelesen zu haben. Das wäre der Idealfall, der aber sicherlich leider nicht immer möglich ist. Trotzdem kann man durch sinnvolle Benennung bereits viele Mehrdeutigkeiten und Ungenauigkeiten ausschließen.
-
Konsistenz und Wiederverwertung
Kommen bestimmte Strukturen in anderen vor? In dem Fall kann man Dinge wiederverwerten. Das verhindert eine ausufernde Anzahl von Tags und man kann sich die Dinge auch besser merken.
Des Weiteren ist es natürlich besser, wenn gleiches auch gleich benannt wird. -
Explizites Markup vs. Implizites Markup
Bevor man seine Namen entwirft, sollte man sich überlegen was man auszeichnen möchte. Soll z.B. eine Konto-Transaktion dargestellt werden, dann wäre ein erster Entwurf sowas:
<transaction>withdrawal 2018 02 15 200.00 </transaction>
.Das enthält noch sehr viel implizite Daten: der Typ der Transaktion, das Datum und der Wert. So eine Struktur lässt sich schlecht parsen, sortieren, vergleichen usw. Besser -- da leichter zugänglich -- wäre so eine:
<transaction type="withdrawal">
<date>2018-02-15</date>
<amount>200.00</amount>
</transaction>
Das soll erstmal nur eine kleine Inspiration sein. Ich habe von Elliotte Rusty Harold das Buch "Effective XML" (50 Specific Ways to Improve Your XML). Das kann ich nächste Woche gerne mitbringen.
from rng2doc.
Hallo Thomas,
ich habe im Branch rng_schema. Damit angefangen ein Schema für das Zwischenformat zu erstellen:
https://bitbucket.org/jloehel/rng2doc/src/72e9ae9d93d14f7b0b5e163197c760684e4f47e2/?at=feature%2Frng_schema
Die Änderungen klingen für mich plausibel. Ich bin mir nachwievor noch nicht ganz im Klaren, was ein gute XML-Struktur ausmacht und worauf ich achten muss, daher sind Vorschläge sehr willkommen.
from rng2doc.
Original comment by Thomas Schraitle (Bitbucket: tomschr, GitHub: tomschr)
See commit bc51215 in branch "feature/issue17-datastructure" for an idea about how the formalized structure of the RNG could look like.
from rng2doc.
Related Issues (20)
- dummy issue
- dummy issue
- dummy issue
- dummy issue
- Add timing functionality
- Add manpage
- Use English Text for HTML output HOT 1
- Create HTML filenames which refer to the element name
- Include RELAX NG schema?
- Improve Logging HOT 9
- Pass xsl:message to logging
- Improve consistency of --output/--output-format options HOT 1
- Output Sphinx/RST HOT 1
- Idea: Add TDG style in addition to SVG graphics
- When called from a different directory, rng2doc fails to find relaxng.rng HOT 5
- SVG display issues in Chrome HOT 1
- Allowing adding custom HTML <title/> / navbar-header text
- Directly allow using RNC schemas
- When there are two alternative regex patterns, allowed attribute values are displayed incorrectly in HTML attributes table
- Markdown support for a:documentation content
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rng2doc.