• Like

Dita Spezialisierung - Wie machen Sie es, und warum Sie es machen sollen.

  • 254 views
Uploaded on

Spezialisierung ist Alleinstellungsmerkmal von DITA und damit das Wichtigste, was es in der technischen Redaktion in den letzten Jahrzehnten gegeben hat. Dieses Tutorial zeigt, warum Spezialisierung …

Spezialisierung ist Alleinstellungsmerkmal von DITA und damit das Wichtigste, was es in der technischen Redaktion in den letzten Jahrzehnten gegeben hat. Dieses Tutorial zeigt, warum Spezialisierung wichtig ist, was es genau bedeutet und wie Sie es erfolgreich umsetzen.

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
254
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
2
Comments
1
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Spezialisierung in DITA Jang F.M. Graat ! JANG Communication - Amsterdam Wie machen Sie es, und warum sollen Sie es machen ? TUT2
  • 2. Wer Spricht ? ✤ Jang F.M. Graat! ✤ Technische Redaktion! ✤ FM, RH, MadCap! ✤ DITA, XSLT, JS, CSS! ✤ Minimalist! ✤ Psychologe, Philosoph! ✤ Weltbürger in Amsterdam
  • 3. Tom Aldous ✤ Integrated Technologies! ✤ Adobe (TechCom)! ✤ Acrolinx! ✤ 2-teiliges Webinar 
 “DITA Specialization”
  • 4. Eliot Kimber ✤ IBM! ✤ Innodata Isogen! ✤ RSI Content Solutions! ✤ Contrext Solutions! ✤ DITA Configuration and Specialization Tutorials! ✤ www.xiruss.org
  • 5. Spezialisierung -Was ist es ?
  • 6. Spezialisierung ist Alleinstellungsmerkmal von DITA DITA, also nicht “ITA”
  • 7. Spezialisierung ≠ Evolution Keine völlig neue Elemente oder Strukturen
  • 8. topic title shortdesc prolog body p, note, ... ol, ul, dl, ... fig, image, ... table section example bodydiv related-links topic concept title shortdesc prolog conbody table section example conbodydiv related-links concept p, note, ... ol, ul, dl, ... fig, image, ... Strukturbezogen Spezialisierung Anpassung der internen Struktur (Elemente, Reihenfolge)
  • 9. Grundtyp “Zimmer” Erforderlich: Tür, Wände, Boden, Decke. Optional: viele Elemente
  • 10. Spezialisierung “Schlafzimmer” Erforderlich: Bett. Nicht erlaubt: Küchenmöbel, Büro, Esstisch, ...
  • 11. Spezialisierung “Esszimmer” Erforderlich: Esstisch, Stüle. Nicht erlaubt: Bett, Kleiderschrank, Toilette, ...
  • 12. EineTerrasse ist kein Zimmer Erforderlich für Grundtyp “Zimmer”: Tür, Wände, Decke.
  • 13. prolog body p note fig table section example bodydiv related-links topic hazardstatement messagepanel hazardsymbol consequence howtoavoid typeofhazard Domainbezogen Spezialisierung Alternatives Element hinzufügen
  • 14. Grundtyp “Stuhl” Jeder weiß, wofür dieses Element gedacht ist
  • 15. Spezialisierung “Bürostuhl” Hat extra Möglichkeiten, bleibt aber wesentlich ein Sitzplatz
  • 16. Spezialisierung “Designstuhl” Kosmetische Anpassungen, gleiche Funktionalität
  • 17. Hart an die Grenze Würde man normalerweise nicht als Sitzplatz akzeptieren
  • 18. topic title shortdesc prolog body p, note, ... ol, ul, dl, ... fig, image, ... table section example bodydiv related-links topic task title shortdesc prolog taskbody prereq context steps example postreq related-links task concept reference title shortdesc prolog refbody refbodydiv section example refsyn table properties refbodydiv related-links reference title shortdesc prolog conbody p, note, ... ol, ul, dl, ... fig, image, ... table section example conbodydiv related-links concept result steps-unord. DITATopic-Typen Spezialisierungen von (Einschränkungen auf) Grundtyp “topic”
  • 19. topic title shortdesc prolog body p ol ul table section example bodydiv related-links topic task title shortdesc prolog taskbody prereq context steps example postreq related-links task result steps-unord. machineryTask title shortdesc prolog taskbody prelreqs context steps example closereqs related-links task result steps-unord. Mehrstufige Spezialisierung Mehr Einschränkungen bei jedem Schritt (nur Strukturbezogen)
  • 20. Spezialisierung -Warum ?
  • 21. 0" 100" 200" 300" 400" 500" 600" 1.0" 1.1" 1.2" Base" Spec" Anzahl der DITA-Elemente DITA “out-of-the-box” verwenden ist Schwachsinn 145 158 170 48 140 364
  • 22. HTML Elemente : Formatierung Bezug auf der Visualisierung in Ihrem Browser <h1>Titel</h1>! <p>Text mit einige <i>Formatierung</i>.</p>! <h2>Titel auf zweite Ebene</h2>! <p>Und noch etwas <b>fette</b> Text</p>! <ul>! <li>• Erster Punkt</li>! <li>• Zweiter Punkt</li>! </ul>
  • 23. XML Elemente : Semantik Bezug auf Bedeutung der Elemente in deren Kontext <topic>! <title>Performing a task</title>! <shortdesc>Just one sentence</shortdesc>! <body>! <p>First paragraph in this task</p>! <section>! <title>Subtask</title>! <p>Another paragraph</p>! </section>! </body>! </topic>
  • 24. Welche Elemente brauchen Sie ? Jede bedeutungsvolle Semantik ist nur lokal gültig
  • 25. Welche Elemente brauchen Sie ? Jede bedeutungsvolle Semantik ist nur lokal gültig
  • 26. “Jeder Nachteil hat seinen Vorteil” (Johan Cruijff) Benutzungsorientiert
  • 27. Elemente ausblenden Elemente minimieren = Eindeutigkeit maximieren
  • 28. Elemente einblenden Sicherstellen, daß bestimmte Elemente eingefügt werden
  • 29. Terminologie erweitern Elementnamen ermöglichen automatische Datenverarbeitung
  • 30. Struktur festlegen Lesbarkeit und Auffindbarkeit der Infos verbessern
  • 31. Kreativität eingrenzen Benutzer brauchen Infos, keine Romane
  • 32. Spezialisierung -Wie ?
  • 33. Auswahl der Zutaten Einschränkung durch Konfiguration und “Constraints”
  • 34. Konfiguration einer DTD-Shell
  • 35. DITA DTDs - Modulare Aufbau DTD Topic Type Shell definiert welche Module eingebunden werden
  • 36. DTDTopicType Shell Definiert welche DTD Module eingebunden werden highlightDomain! utilitiesDomain! indexingDomain! hazardstatementDomain abbreviateDomain! programmingDomain! softwareDomain! uiDomain! topic.mod <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">

  • 37. BaseTopicTyp Nur unspezifische Domäne sind eingebunden highlightDomain! utilitiesDomain! indexingDomain! hazardstatementDomain abbreviateDomain! programmingDomain! softwareDomain! uiDomain! topic.mod <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Base Topic//EN" "basetopic.dtd">

  • 38. Entfernen einer Domain Alle Referenzen müssen entfernt werden ! <!ENTITY % hi-d-dec 
 PUBLIC "-//OASIS//ENTITIES DITA 1.2 Highlight Domain//EN" 
 "highlightDomain.ent"
 >%hi-d-dec;
 ! <!ENTITY % ph "ph | 
 %hi-d-ph;
 ">
 ! <!ENTITY included-domains 
 "&hi-d-att; 
 &ut-d-att; 
 &hazard-d-att;">
 ! <!ENTITY % hi-d-def 
 PUBLIC "-//OASIS//ELEMENTS DITA 1.2 Highlight Domain//EN" 
 "highlightDomain.mod"
 >%hi-d-def;
 
 1 ! ! 2 ! ! 3 ! ! 4
  • 39. MinimalerTopicTyp Keine Spezialisierung oder Einschränkung (“.mod” Datei) erforderlich highlightDomain! utilitiesDomain! indexingDomain! hazardstatementDomain abbreviateDomain! programmingDomain! softwareDomain! uiDomain! topic.mod <!DOCTYPE topic SYSTEM "minitopic.dtd">

  • 40. Verfügbarkeit “PUBLIC” Eindeutige PUBLIC ID Schlüssel - muß nicht wirklich existieren highlightDomain! utilitiesDomain! indexingDomain! hazardstatementDomain abbreviateDomain! programmingDomain! softwareDomain! uiDomain! topic.mod <!DOCTYPE topic PUBLIC "-//IDN ditadocs.com//DTD Mini Topic//EN" "minitopic.dtd">

  • 41. Wie erzähle ich es meine OT ? XML Katalog bildet PUBLIC IDs ab auf lokale Dateien <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE topic PUBLIC "-//IDN ditadocs.com//DTD Mini Topic//EN"" "minitopic.dtd">
 <topic id="topic_vck_2nc_sn">
 <title>Topic title</title>
 <body>
 <p>Topic paragraph</p>
 </body>
 </topic>
 
 <!-- Custom DTDs defined by JANG Communication / ditadocs.com -->
 
 <public publicId="-//IDN ditadocs.com//DTD Mini Topic//EN"" uri="minitopic.dtd" " xml:base="plugins/com.ditadocs.minitopic/dtd/">" </public>

  • 42. Einschränkungen (“Constraints”)
  • 43. Extremes Constraint-Modul Constraints definieren Inhalts-Entitäten neu ! <?xml version="1.0" encoding="UTF-8"?>
 <!-- ======================================
 Constraint Module: Paragraphs with only text.
 
 Copyright (c) 2014 JANG Communication
 
 ====================================== -->
 
 <!ENTITY topic-constraints "(topic TextOnlyTopic-c)" >
 
 <!ENTITY % p.content 
 " ( #PCDATA )
 ">" 
 TextOnlyTopicConstraints.mod
  • 44. Nicht alles ausschließen ? Definition der schon bekannten Entitäten wegen Verarbeitungsreihenfolge ! <?xml version=”1.0” encoding=”UTF-8”?>" <!-- Constraint module: highlights-only paragraphs " Copyright (c) 2010 Eliot Kimber -->" ! <!ENTITY topic-constraints “(topic HighlightsOnlyTopic-c)” >" ! <!ENTITY % b "b" >
 <!ENTITY % i "i" >
 <!ENTITY % u "u" > 
 ! <!ENTITY % p.content "(#PCDATA | 
 %b; | 
 %i; |
 %u;)*"
 >" 
 HighlightsOnlyTopicConstraints.mod
  • 45. Constraints aktivieren Reihenfolge der Definitionen in der DTD ist wichtig ! <!-- DOMAINS ATTRIBUTE OVERRIDE -->" ! <!ENTITY included-domains "&topic-constraints;" >
 ! <!-- CONTENT CONSTRAINT INTEGRATION -->" ! <!ENTITY % TextOnlyTopic-c-def 
 SYSTEM "TextOnlyTopicConstraint.mod">
 %TextOnlyTopic-c-def;
 ! <!-- TOPIC ELEMENT INTEGRATION -->" ! ..." 
 TextOnlyTopic.dtd 1 ! ! 2
  • 46. Einschränkung der Gültigkeit Nur an Stellen, die im Constraint-Modul neu definiert wurden ! <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE topic PUBLIC "-//IDN ditadocs.com//DTD TextOnlyTopic//EN" " "TextOnlyTopic.dtd">
 ! <topic id="topic_vck_2nc_sn">
 <title>Topic title</title>
 <body>
 <p>Topic paragraph with <term>Invalid</term> content.</p>" <note>The <term>Term</term> element is still valid here.</note>
 </body>
 </topic>
 
 MyTestDoc.dita
  • 47. DITA-taugliche Software Automatische Erkennung der Einschränkungen und Spezialisierungen
  • 48. Erlaubte Einschränkungen Eingeschränktes Modell muß gegen allgemeines Modell validieren ! ! ! ! x x x x x x x x11
  • 49. Eigenbau Elemente Wenn die 534 Standard DITA Elemente nicht ausreichen
  • 50. Spezialisierung
  • 51. hazardstatement messagepanel hazardsymbol consequence howtoavoid typeofhazard note ul image li p, ol, dl, sl, ... fig, table, ... apinamekeyword Grundprinzip Spezialisierung geht immer von ein existierendes Element aus
  • 52. Vererbung über “class”Attribut Zeigt komplette Abstammung des Elements @class = “- topic/body task/taskbody mytask/mytaskbody “ Elemente DTD Module Struktur @class = “+ topic/p mydomain-d/mypara “ Elemente DTD Module Domain
  • 53. Semantische Erweiterung Ermöglicht einfache und bequeme Bereicherung der Inhalte The basic principle in phenomenology is the episteme, or "putting the world within brackets". Whatever we may see in the outside world, we try to disregard. Not by closing our eyes, but by looking at the way we look at the world. The foreground (the world) becomes the background and the act of looking becomes the focus of our attention. Of course, this reflection (in an almost literal sense) can be repeated endlessly. philosophy-termterm
  • 54. Elementdefinition Mehrere Elemente können in einem Modul kombiniert werden ! <!-- ELEMENT NAME ENTITIES -->
 
 <!ENTITY % philo-term "philo-term" >
 
 <!-- ELEMENT DECLARATIONS -->
 
 <!ENTITY % philo-term.content " (#PCDATA)* " >
 <!ENTITY % philo-term.attributes ' %univ-atts; ' >" 
 <!ELEMENT philo-term %philo-term.content; >
 <!ATTLIST philo-term %philo-term.attributes; >
 
 <!-- SPECIALIZATION ATTRIBUTE DECLARATIONS -->
 
 <!ATTLIST philo-term %global-atts; " class CDATA "+ topic/term jang-d/philo-term " >
 ! JangDomain.mod
  • 55. Definition der Entitäten Werden in der spezialisierten DTD eingebunden ! <!ENTITY % jang-d-term "philo-term" >
 
 <!ENTITY jang-d-att "(topic jang-d)" >" 
 JangDomain.ent ! <!ENTITY % jang-d-term " "philo-concept |" philosopher |" school |" dogma" " >
 
 <!ENTITY jang-d-att "(topic jang-d)" >" 

  • 56. Elementdefinition Mehrere Elemente können in einem Modul kombiniert werden ! <!-- DOMAIN ENTITY DECLARATIONS -->
 
 <!ENTITY % jang-d-dec SYSTEM "jangDomain.ent" >%jang-d-dec;
 ! <!-- DOMAIN EXTENSIONS -->" ! <!ENTITY % term "term | %jang-d-term; " >" ! <!-- DOMAINS ATTRIBUTE OVERRIDE -->
 
 <!ENTITY included-domains 
 "&hi-d-att; 
 &jang-d-att;" >" ! <!-- DOMAIN ELEMENT INTEGRATION -->
 
 <!ENTITY % jang-d-def SYSTEM "jangDomain.mod" >%jang-d-def;
 
 philotopic.dtd
  • 57. Neues Element verfügbar Blendet keine existierende Elemente aus
  • 58. Festlegen einer Struktur Keine Formatierungsänderungen erforderlich
  • 59. recipebody recipe concept title shortdesc conbody section image p p ul li ol li title shortdesc ingredient recipeinfo image source cuisine ingredients instructions recipestep Grundtypen auswählen Ist das Mapping erlaubt ?
  • 60. recipebody recipe topic title shortdesc body section image p p ul li ol li title shortdesc ingredient recipeinfo image source cuisine ingredients instructions recipestep Grundtypen auswählen Ist das Mapping erlaubt ?
  • 61. recipebody recipe task title shortdesc taskbody context image p p prereq p steps step title shortdesc ingredient recipeinfo image source cuisine ingredients instructions recipestep Grundtypen auswählen Welches Mapping ist optimal für Ihre Anwendung ?
  • 62. recipebody recipe task title shortdesc taskbody context image p p prereq ul li steps step cmd title shortdesc ingredient recipeinfo image source cuisine ingredients recipesteps recipestep cmd recipereqs Struktur / Mapping optimieren Ein iterativer Prozeß führt zu ein optimales Ergebnis
  • 63. Testdokument erstellen So lange es ungültig ist, ist Ihre DTD noch nicht richtig definiert ! <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE recipe SYSTEM "recipe.dtd" >
 
 <recipe id="risotto-mushrooms">
 <title>Risotto with mushrooms</title>
 <shortdesc>A simple and fast Italian dish with a modern British twist." </shortdesc>
 <recipebody>
 <recipeinfo>
 <image></image>
 <recipesrc>Jamie Oliver</recipesrc>
 <recipestyle>Modern Italian</recipestyle>
 </recipeinfo>
 <recipereqs>
 <ingredients>
 <ingredient>500g risotto rice</ingredient>
 <ingredient>250g cellery</ingredient>
 <ingredient>3 cloves of garlic</ingredient>
 risotto-mushrooms.xml
  • 64. Shell DTD erstellen Kopieren und anpassen ist eine effiziente und sichere Methode ! <?xml version="1.0" encoding="UTF-8"?>
 <!-- ============================================================= -->
 <!-- HEADER -->
 <!-- ============================================================= -->
 <!-- MODULE: DITA Recipe DTD -->
 <!-- VERSION: 1.0 -->
 <!-- -->
 <!-- SYSTEM: Darwin Information Typing Architecture (DITA) -->
 <!-- -->
 <!-- PURPOSE: DTD to describe DITA Recipes -->
 <!-- -->
 <!-- ORIGINAL CREATION DATE: -->
 <!-- April 2014 -->
 <!-- (C) Copyright JANG Communication 2014 -->
 <!-- -->
 <!-- ============================================================= -->" 
 recipe.dtd
  • 65. Unbenötigte Domäne entfernen Alle Referenzen müssen entfernt werden ! <!ENTITY % hi-d-dec 
 PUBLIC "-//OASIS//ENTITIES DITA 1.2 Highlight Domain//EN" 
 "highlightDomain.ent"
 >%hi-d-dec;
 ! <!ENTITY % ph "ph | 
 %hi-d-ph;
 ">
 ! <!ENTITY included-domains 
 "&hi-d-att; 
 &ut-d-att; 
 &hazard-d-att;">
 ! <!ENTITY % hi-d-def 
 PUBLIC "-//OASIS//ELEMENTS DITA 1.2 Highlight Domain//EN" 
 "highlightDomain.mod"
 >%hi-d-def;
 
 1 ! 2 ! 3 ! ! 4 recipe.dtd
  • 66. Einbetten vonTopics untersagen Generell sind Tasks innerhalb einer Task erlaubt ! <!-- ============================================================= -->
 <!-- TOPIC NESTING OVERRIDE -->
 <!-- ============================================================= -->
 
 <!-- Redefine the infotype entity to exclude 
 other topic types and disallow nesting -->
 <!ENTITY % recipe-info-types 
 "no-topic-nesting" >
 ! 
 recipe.dtd
  • 67. Modul-Datei erstellen Kopieren der "task.mod" und referenzieren in der neuen DTD ! <!-- ============================================================= -->
 <!-- TOPIC ELEMENT INTEGRATION -->
 <!-- ============================================================= -->
 
 <!-- Embed topic to get generic elements -->
 <!ENTITY % topic-type PUBLIC 
 "-//OASIS//ELEMENTS DITA 1.2 Topic//EN" 
 "../../base/dtd/topic.mod" >
 %topic-type;
 
 <!-- Embed recipe to get specific elements -->
 <!ENTITY % recipe-typemod SYSTEM "recipe.mod" >
 %recipe-typemod;
 
 technicalContent/dtd/task.mod recipe.mod
  • 68. Entitäten definieren Alle spezialisierten Elemente werden in der "mod" Datei definiert ! <!-- ============================================================= -->
 <!-- ELEMENT NAME ENTITIES -->
 <!-- ============================================================= -->
 
 <!ENTITY % recipe "recipe" >
 <!ENTITY % recipebody "recipebody" >
 <!ENTITY % recipesteps "recipesteps" >
 <!ENTITY % recipestep "recipestep" >
 <!ENTITY % recipereqs "recipereqs" >
 <!ENTITY % recipeinfo "recipeinfo" >
 <!ENTITY % recipesrc "recipesrc" >
 <!ENTITY % recipestyle "recipestyle" >
 <!ENTITY % ingredients "ingredients" >
 <!ENTITY % ingredient "ingredient" >
 
 recipe.mod
  • 69. Elemente definieren Inhalte und Attribute aller spezialisierten Elemente ! <!-- ============================================================= -->
 <!-- ELEMENT DECLARATIONS -->
 <!-- ============================================================= -->
 
 <!ENTITY % recipebody.content
 "((%recipeinfo;), 
 (%recipereqs;),
 (%recipesteps;) )"
 >
 
 <!ENTITY % recipebody.attributes
 "%univ-atts;"
 >
 <!ELEMENT recipebody %recipebody.content;>
 <!ATTLIST recipebody %recipebody.attributes;>
 
 recipe.mod
  • 70. Abstammung definieren Attribut "class" muß zeigen, welche Vorfahren jedes Element hat <!-- ============================================================= -->
 <!-- SPECIALIZATION ATTRIBUTE DECLARATIONS -->
 <!-- ============================================================= -->
 
 
 <!ATTLIST recipe %global-atts; class CDATA "- topic/topic task/task recipe/recipe " >
 <!ATTLIST recipebody %global-atts; class CDATA "- topic/body task/taskbody recipe/recipebody " >
 <!ATTLIST recipesteps %global-atts; class CDATA "- topic/ol task/steps recipe/recipesteps " >
 <!ATTLIST recipestep %global-atts; class CDATA "- topic/li task/step recipe/recipestep " >
 <!ATTLIST recipereqs %global-atts; class CDATA "- topic/section task/prereq recipe/recipereqs " >
 <!ATTLIST recipeinfo %global-atts; class CDATA "- topic/section task/context recipe/recipeinfo " >
 <!ATTLIST recipesrc %global-atts; class CDATA "- topic/p recipe/recipesrc " >
 <!ATTLIST recipestyle %global-atts; class CDATA "- topic/p recipe/recipestyle " >
 <!ATTLIST ingredients %global-atts; class CDATA "- topic/ul recipe/ingredients " >
 <!ATTLIST ingredient %global-atts; class CDATA "- topic/li recipe/ingredient " >
 recipe.mod @class = “- module/element module/element “ Ursprung Spezialisierung Leerzeichen am EndeStrukturell
  • 71. Entitäten-Datei definieren Entität muß die Abstammung enthalten <?xml version="1.0" encoding="UTF-8"?>
 <!-- ============================================================= -->
 <!-- HEADER -->
 <!-- ============================================================= -->
 <!-- MODULE: DITA Recipe Entity -->
 <!-- VERSION: 1.2 -->
 <!-- DATE: April 2014 vvv -->
 <!-- -->
 <!-- ============================================================= -->
 
 <!-- ============================================================= -->
 <!-- RECIPE ENTITIES -->
 <!-- ============================================================= -->
 
 <!ENTITY recipe-att 
 "(topic task recipe)"
 >
 
 <!-- ================== End Task Entities ======================== --> recipe.ent
  • 72. Entitäten-Datei referenzieren Über SYSTEM oder per PUBLIC ID via "catalog-dita.xml" ! <!-- TOPIC ENTITY DECLARATIONS -->
 
 <!ENTITY % recipe-dec 
 PUBLIC "-//IDN ditadocs.com//DITA Recipe//EN" 
 "recipe.ent"
 >%recipe-dec;" ! <!-- DOMAINS ATTRIBUTE OVERRIDE -->
 
 <!ENTITY included-domains 
 "&task-att;" &recipe-att;
 &taskbody-constraints; 
 "
 >
 
 recipe.dtd
  • 73. Rezepte editieren in XML Sicherstellen, daß alle Autoren den gleichen Struktur folgen
  • 74. XSLT und XPath Semantik ermöglicht einfaches Auffinden aller Inhalte
  • 75. XSLT und XSL-FO Semantik ermöglicht automagische Umwandlung der Inhalte
  • 76. Fragen ? www.jang.nl! jang@jang.nl! 4everJang! blogs.jang.nl