XML 스키마(XSD)에서 Json 스키마 생성
기존 XML 스키마(XSD 파일)에서 JSON 스키마를 생성하는 방법을 아는 사람이 있습니까?사용할 수 있는 도구가 있습니까?
면책사항:저는 강력한 오픈 소스 XML인 Jsonix <-> JSON JavaScript 매핑 라이브러리입니다.
오늘 저는 새로운 JSON Schema 생성 기능을 갖춘 Jsonix Schema 컴파일러의 새로운 버전을 출시했습니다.
구매 주문 스키마를 예로 들어 보겠습니다.다음은 단편입니다.
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="items" type="Items"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
제공된 명령줄 도구를 사용하여 이 스키마를 컴파일할 수 있습니다.
java -jar jsonix-schema-compiler-full.jar
-generateJsonSchema
-p PO
schemas/purchaseorder.xsd
컴파일러는 일치하는 JSON 스키마뿐만 아니라 JSonix 매핑을 생성합니다.
결과는 다음과 같습니다(간단하게 편집).
{
"id":"PurchaseOrder.jsonschema#",
"definitions":{
"PurchaseOrderType":{
"type":"object",
"title":"PurchaseOrderType",
"properties":{
"shipTo":{
"title":"shipTo",
"allOf":[
{
"$ref":"#/definitions/USAddress"
}
]
},
"billTo":{
"title":"billTo",
"allOf":[
{
"$ref":"#/definitions/USAddress"
}
]
}, ...
}
},
"USAddress":{ ... }, ...
},
"anyOf":[
{
"type":"object",
"properties":{
"name":{
"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName"
},
"value":{
"$ref":"#/definitions/PurchaseOrderType"
}
},
"elementName":{
"localPart":"purchaseOrder",
"namespaceURI":""
}
}
]
}
이 JSON 스키마는 원래 XML 스키마에서 파생되었습니다.이것은 정확히 1:1 변환은 아니지만 매우 근접합니다.
생성된 JSON 스키마가 generatd Jsonix 매핑과 일치합니다.따라서 XML 변환에 JSONix를 사용하는 경우 생성된 JSON 스키마를 사용하여 JSON을 검증할 수 있어야 합니다.또한 원본 XML 스키마에서 필요한 모든 메타데이터(요소, 속성 및 유형 이름 등)가 포함됩니다.
면책사항:현재 이것은 새롭고 실험적인 기능입니다.이미 알려진 제한사항과 누락된 기능이 있습니다.하지만 나는 이것이 매우 빨리 나타나고 성숙하기를 기대한다.
링크:
- NPM용 데모 발주 프로젝트 - 확인 후
npm install
- 문서
- 현재 릴리즈
- npmjs.com의 Jsonix Schema 컴파일러
JSON Schema는 XML Schema와 동등한 기능을 의도하지 않았습니다.한쪽에는 기능이 있지만 다른 한쪽에는 없습니다.
일반적으로 XML에서 JSON으로의 매핑을 다시 작성할 수 있지만 XML 스키마 및 JSON 스키마의 경우는 그렇지 않습니다.
즉, XML 파일을 JSON에 매핑하고 있는 경우, XSD가 XML을 검증하는 것과 거의 같은 방법으로 JSON 스키마를 작성할 수 있습니다.그러나 직접 매핑은 아닙니다.또한 XSD가 XML을 검증하는 것과 똑같이 JSON을 검증하는 것은 보증할 수 없습니다.
따라서 두 사양이 100% 기능 호환성이 없는 한 검증 시스템을 XML/XSD에서 JSON/JSON Schema로 이행하려면 사용자의 개입이 필요합니다.
면책사항:저는 jgeXml의 저자입니다.
jgexml에는 Node.js 기반 유틸리티가 있습니다.xsd2json
XML 스키마(XSD)와 JSON 스키마 파일 간의 변환을 수행합니다.
다른 옵션과 마찬가지로 1:1 변환이 아니며 JSON 스키마 검증을 개선하기 위해 출력을 수동으로 편집해야 할 수도 있지만 OpenAPI(스위거) 정의 내의 복잡한 XML 스키마를 나타내기 위해 사용되었습니다.
다른 답변에 제시된 buchaseorder.xsd의 예는 다음과 같습니다.
"PurchaseOrderType": {
"type": "object",
"properties": {
"shipTo": {
"$ref": "#/definitions/USAddress"
},
"billTo": {
"$ref": "#/definitions/USAddress"
},
"comment": {
"$ref": "#/definitions/comment"
},
"items": {
"$ref": "#/definitions/Items"
},
"orderDate": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}.*$"
}
},
XML 스키마를 여기에 복사하여 XML 스키마에서 JSON 스키마를 생성하는 데 사용할 수 있는 온라인 도구에 JSON 스키마 코드를 가져옵니다.
그렇습니다만, xmlspy를 사용하여 json을 xml로 변환한 후에는 trang 애플리케이션(http://www.thaiopensource.com/relaxng/trang.html)을 사용하여 xml 파일에서 xsd를 생성할 수 있습니다.
언급URL : https://stackoverflow.com/questions/3922026/generate-json-schema-from-xml-schema-xsd
'programing' 카테고리의 다른 글
Spring Crud Repository .orelse던지다() (0) | 2023.03.08 |
---|---|
"No capture browser" 메시지가 표시되었기 때문에 Karma가 유닛 테스트를 실행하지 않음 (0) | 2023.03.03 |
반응에서 화살표 기능의 올바른 사용 (0) | 2023.03.03 |
ng-click angularjs 폼 검증 (0) | 2023.03.03 |
angularjs newline 필터(다른 html 없음) (0) | 2023.03.03 |