Library for IEC 61850 standard
npm install @opentemplate/scl-libscl-lib
====



npm i @opentemplate/scl-lib
`LibWorkspace
This project was generated with Angular CLI version 14.1.3.
scl-lib
====
#### Library for IEC 61850 standard



Usage
$3
`
npm i @opentemplate/scl-lib
`[//]: # ()
##### Context
!context screenshot
##### Usage
You can import the library files from TypeScript:
`TypeScript
import { ScllibService, _SCLType } from '@opentemplate/scl-lib';
`
##### Example
* Marshal Document use case
`TypeScript
const namespaces: any = {
namespacePrefixes: {
"http://www.iec.ch/61850/2003/SCL": "",
"http://www.w3.org/2001/XMLSchema": "xs"
},
mappingStyle : "simplified"
};
...
constructor(private scllibService: ScllibService) {
this.scllibService.setContext(namespaces);
}
...
const scl: _SCLType = {
release: 4,
revision: "B",
version: "2007",
header: {
id: uuid.v4()
}
};
...
this.scllibService.marshalDocument({SCL: scl})
`
[//]: # (The compiler looks like this.)[//]: # (
`TypeScript)[//]: # ( ...)
[//]: # ( localName: 'SCL',)
[//]: # ( baseTypeInfo: '.TBaseElement',)
[//]: # ( propertyInfos: [{)
[//]: # ( name: 'header',)
[//]: # ( required: true,)
[//]: # ( elementName: 'Header',)
[//]: # ( typeInfo: '.THeader')
[//]: # ( }, {)
[//]: # ( name: 'substation',)
[//]: # ( minOccurs: 0,)
[//]: # ( collection: true,)
[//]: # ( elementName: 'Substation',)
[//]: # ( typeInfo: '.TSubstation')
[//]: # ( }, {)
[//]: # ( name: 'communication',)
[//]: # ( elementName: 'Communication',)
[//]: # ( typeInfo: '.TCommunication')
[//]: # ( }, {)
[//]: # ( name: 'ied',)
[//]: # ( minOccurs: 0,)
[//]: # ( collection: true,)
[//]: # ( elementName: 'IED',)
[//]: # ( typeInfo: '.TIED')
[//]: # ( }, {)
[//]: # ( name: 'dataTypeTemplates',)
[//]: # ( elementName: 'DataTypeTemplates',)
[//]: # ( typeInfo: '.TDataTypeTemplates')
[//]: # ( }, {)
[//]: # ( ...)
[//]: # (
`)
!marshalDocument screenshot
- _SCLType interface and others generated by Jsonix tool.
- ScllibService use a Javascript compiler generated by the cxsd tool.----
$3
$3
After fixing this https://github.com/highsource/jsonix/pull/266 we published 3.0.0-next.0 to npm as @opentempl/jsonix.
* Jsonix (JSON interfaces for XML) is a JavaScript library which allows you to convert between XML and JSON structures.
* With Jsonix you can parse XML into JSON (this process is called _unmarshalling_) or serialize JSON in XML form (this is called _marshalling_).
* These conversions are based on declarative XML/JSON mappings which can be written manually or generated from an XML Schema.Jsonix advantages:
* Strongly structured
* Type-safe
* Bidirectional
* (Optionally) XML Schema-driven
$3
* cxsd is a streaming XSD parser and XML parser generator for Node.js and
(optionally but highly recommended) TypeScript.
It automatically downloads all referenced
.xsd files and outputs two files for each defined namespace:
- .js JavaScript code for Node.js containing a compact state machine table for the cxml parser.
- .d.ts` TypeScript definition with JSDoc comments to help editors with tab completion, type verification and tooltips.---
Information about supported @opentempl/scl-lib versions.
| Version | Supported | Scope |
| ------- | ------------------ | ------- |
| <= 0.1.24 | :x: | opentempl |
| > 0.1.24 & <= 0.1.32 | :white_check_mark: | opentempl |
We published 0.2.0 to npm as @opentemplate/scl-lib and will continue to publish updates there.
| Version | Supported | Scope | Scope |
|------------| ------------------ | ------- |------------|
| >= 0.2.0 | :white_check_mark: | opentemplate | Angular 14 |
| = 1.0.5 | :white_check_mark: | opentemplate | Angular 15 |
| >= 1.0.6 | :white_check_mark: | opentemplate | Angular 16 |