2015-02-20 9 views
8

Hier ist eine JSON-Instanz, welche die Startzeit und Endzeit für ein Treffen:JSON: Gibt es ein Äquivalent von Schematron für JSON und JSON Schema? (Das heißt, eine JSON-Technologie zum Ausdruck bringt Co-Constraints)

{ 
    "start time": "2015-02-19T08:00:00Z", 
    "end time": "2015-02-19T09:00:00Z" 
} 

ich die Struktur dieser Instanz angeben JSON mit Schema: Die Instanz muss ein Objekt mit einer "Startzeit" -Eigenschaft und einer "Endzeit" -Eigenschaft enthalten, und jede Eigenschaft muss eine Datum/Uhrzeit-formatierte Zeichenfolge sein. Siehe unten für das JSON-Schema. Was ich jedoch nicht spezifizieren kann, ist folgendes: Das Meeting muss beginnen, bevor es endet. Das heißt, der Wert von "Startzeit" muss kleiner als der Wert von "Endzeit" sein. Manche Leute nennen diese Datenabhängigkeit eine Co-Constraint. In der XML-Welt gibt es eine wundervolle, einfache Technologie, um Co-Constraints auszudrücken: Schematron. Ich frage mich, ob es eine gleichwertige Technologie in der JSON-Welt gibt? Was würden Sie verwenden deklarativ beschreiben Sie die Beziehung zwischen dem Wert von "Startzeit" und "Endzeit"? (Anmerkung: Code in einer Programmiersprache zu schreiben ist nicht was ich unter "deklarativ beschreiben die Beziehungen" verstehe. Ich suche ein deklaratives Mittel zur Beschreibung der Datenabhängigkeiten, die in JSON-Dokumenten vorhanden sind, nicht prozeduralen Code.)

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "definitions": { 
     "meeting": { 
      "type": "object", 
      "properties": { 
       "start time": { "type": "string", "format": "date-time"}, 
       "end time": { "type": "string", "format": "date-time"} 
      }, 
      "required": [ "start time", "end time" ], 
      "additionalProperties": false 
     } 
    }, 
    "$ref": "#/definitions/meeting" 
} 
+1

Nicht genau das, wonach Sie suchen, aber Sie könnten die JSON-Daten zuerst in XML konvertieren und danach alle Schematron-Regeln darauf anwenden? Ein Tool, das beides unterstützt, wäre [XML ValidatorBuddy] (http://www.xml-buddy.com) – Clemens

Antwort

-1

Die json-schema.org Website listet einige Implementierungen auf.

+0

Nichts auf dieser Seite ist relevant für die Frage nach Schematron. – bazzargh

1

Leider ist die Antwort nein. JSON-Schema ermöglicht Ihnen, die Struktur und die zulässigen Werte zu überprüfen, aber es gibt keine Mechanismen zum Validieren von Wertesätzen, a'la Schematron.

Der einfachste Weg, dies zu lösen, ist, ein anderes Skript in der Pipeline zu haben, das diese Art von Prüfungen ausführt.