2015-02-20 17 views
8

Oto przykład JSON pokazujący czas rozpoczęcia i czas zakończenia spotkania:JSON: Czy istnieje odpowiednik Schematron dla JSON i JSON Schema? (Oznacza to, że technologia JSON wyrazić współpracowników ograniczeń)

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

mogę określić strukturę tej instancji przy użyciu JSON Schemat: instancja musi zawierać obiekt z właściwością "czas rozpoczęcia" i właściwością "czas zakończenia", a każda właściwość musi być ciągiem sformatowanym w formacie daty i czasu. Zobacz poniżej schemat JSON. Ale nie mogę tego określić: spotkanie musi się rozpocząć, zanim się skończy. Oznacza to, że wartość "czasu rozpoczęcia" musi być mniejsza niż wartość "czasu zakończenia". Niektórzy nazywają tę zależność danych wzajemnym ograniczeniem. W świecie XML istnieje wspaniała, prosta technologia do wyrażania współzależności: Schematron. Zastanawiam się, czy istnieje odpowiednik technologii w świecie JSON? Co byś użył do deklaracji deklaratywnie opisującej związek między wartością "czasu rozpoczęcia" i "czasu zakończenia"? (Uwaga: pisanie kodu w jakimś języku programowania to , a nie co mam na myśli przez "deklaratywne opisanie relacji" .Poszukuję deklaratywnego sposobu opisywania zależności danych, które są obecne w dokumentach JSON, a nie kodu proceduralnego.)

{ 
    "$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

Nie dokładnie to, czego szukasz, ale możesz przekonwertować dane JSON najpierw na XML, a następnie zastosować później zasady Schematron? Narzędziem obsługującym oba typy byłoby [XML ValidatorBuddy] (http://www.xml-buddy.com) – Clemens

Odpowiedz

-1

Na stronie internetowej json-schema.org wymieniono kilka implementacji.

+0

Nic na tej stronie nie jest istotne dla pytania o Schematron. – bazzargh

1

Niestety, odpowiedź brzmi: nie. Schemat JSON umożliwia weryfikację struktury i dopuszczalnych wartości, ale nie ma mechanizmów sprawdzania poprawności zestawów wartości, a'la Schematron.

Najprostszym sposobem rozwiązania tego problemu jest posiadanie kolejnego skryptu, który uruchamia takie rodzaje kontroli.