diff --git a/docs/odata-csdl-json/odata-csdl-json.html b/docs/odata-csdl-json/odata-csdl-json.html index 7e982b0c2..e88b8051b 100644 --- a/docs/odata-csdl-json/odata-csdl-json.html +++ b/docs/odata-csdl-json/odata-csdl-json.html @@ -308,6 +308,9 @@

2.3 JSON Schema Definition

The structure of CSDL JSON documents can be verified with the JSON Schema OData-CSDL-Schema provided as an additional artifact of this prose specification. This schema only defines the shape of a well-formed CSDL JSON document but is not descriptive enough to define what a correct CSDL JSON document MUST be in every imaginable use case. This specification document defines additional rules that correct CSDL JSON documents MUST fulfill. In case of doubt on what makes a CSDL JSON document correct the rules defined in this specification document take precedence.

+ +

3 Entity Model

An OData service exposes a single entity model. This model may be distributed over several schemas, and these schemas may be distributed over several documents.

A service is defined by a single CSDL document which can be accessed by sending a GET request to <serviceRoot>/$metadata. This document is called the metadata document. It MAY reference other CSDL documents.

@@ -530,7 +533,7 @@

3.6 Annotation

A model element MUST NOT specify more than one annotation for a given combination of term and qualifier.


4 CSDL JSON Document

-
+

::: {.varjson .rep}

Document Object

A CSDL JSON document consists of a single JSON object. This document object MUST contain the member $Version.

The document object MAY contain the member $Reference to reference other CSDL documents.

@@ -539,8 +542,7 @@

Doc

$Version

The value of $Version is a string containing either 4.0 or 4.01.

$EntityContainer

-

The value of $EntityContainer is value is the namespace-qualified name of the entity container of that service. This is the only place where a model element MUST be referenced with its namespace-qualified name and use of the alias-qualified name is not allowed.

-
+

The value of $EntityContainer is value is the namespace-qualified name of the entity container of that service. This is the only place where a model element MUST be referenced with its namespace-qualified name and use of the alias-qualified name is not allowed. :::

Example 2:

{
diff --git a/docs/odata-csdl-json/odata-csdl-json.md b/docs/odata-csdl-json/odata-csdl-json.md
index e2d29d6f6..d08aa82dd 100644
--- a/docs/odata-csdl-json/odata-csdl-json.md
+++ b/docs/odata-csdl-json/odata-csdl-json.md
@@ -364,6 +364,8 @@ additional rules that correct CSDL JSON documents MUST fulfill. In case
 of doubt on what makes a CSDL JSON document correct the rules defined in
 this specification document take precedence.
 
+
 
 # 3 Entity Model
 
@@ -575,7 +577,7 @@ combination of term and qualifier.
 
 # 4 CSDL JSON Document
 
-::: {.varjson .rep}
+::: {.varjson .rep}  
 ###  Document Object
 
 A CSDL JSON document consists of a single JSON object. This document object MUST contain the member `$Version`.
diff --git a/docs/odata-csdl-json/odata-csdl-json.pdf b/docs/odata-csdl-json/odata-csdl-json.pdf
index bb1cd7705..3eec8f4ea 100644
Binary files a/docs/odata-csdl-json/odata-csdl-json.pdf and b/docs/odata-csdl-json/odata-csdl-json.pdf differ
diff --git a/docs/odata-csdl-xml/odata-csdl-xml.html b/docs/odata-csdl-xml/odata-csdl-xml.html
index 301c20bdc..99b092e0e 100644
--- a/docs/odata-csdl-xml/odata-csdl-xml.html
+++ b/docs/odata-csdl-xml/odata-csdl-xml.html
@@ -259,6 +259,9 @@ 

Representation-Specific Headline

odata-csdl-xml-v4.02-csd01.md

This uses pandoc 3.1.2 from https://github.com/jgm/pandoc/releases/tag/3.1.2.

+ +

2 XML Representation

OData CSDL XML is a full representation of the OData Common Schema Definition Language in the Extensible Markup Language (XML) 1.1 (Second Edition) XML-1.1 with further building blocks from the W3C XML Schema Definition Language (XSD) 1.1 as described in XML-Schema-1 and XML-Schema-2.

It is an alternative to the CSDL JSON representation defined in OData-CSDLJSON and neither adds nor removes features.

@@ -524,15 +527,14 @@

3.6 Annotation

A model element MUST NOT specify more than one annotation for a given combination of term and qualifier.


4 CSDL XML Document

-
+

::: {.varxml .rep}

Element edmx:Edmx

The edmx:Edmx element is the root element of a CSDL XML document. It MUST contain the Version attribute and it MUST contain exactly one edmx:DataServices element.

It MAY contain edmx:Reference elements to reference other CSDL documents.

Attribute Version

The Version attribute specifies the OData protocol version of the service. For OData 4.0 responses the value of this attribute MUST be 4.0. For OData 4.01 responses the value of this attribute MUST be 4.01. Services MUST return an OData 4.0 response if the request was made with an OData-MaxVersion header with a value of 4.0.

Element edmx:DataServices

-

The edmx:DataServices element MUST contain one or more edm:Schema elements which define the schemas exposed by the OData service.

-
+

The edmx:DataServices element MUST contain one or more edm:Schema elements which define the schemas exposed by the OData service. :::

Example 2:

<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"
diff --git a/docs/odata-csdl-xml/odata-csdl-xml.md b/docs/odata-csdl-xml/odata-csdl-xml.md
index 9101e721e..8fd6780c0 100644
--- a/docs/odata-csdl-xml/odata-csdl-xml.md
+++ b/docs/odata-csdl-xml/odata-csdl-xml.md
@@ -204,6 +204,8 @@ This uses pandoc 3.1.2 from https://github.com/jgm/pandoc/releases/tag/3.1.2.
 :::
 
 
+
 # 2 XML Representation
 
 OData CSDL XML is a full representation of the OData Common Schema
@@ -517,7 +519,7 @@ combination of term and qualifier.
 
 
 
-::: {.varxml .rep}
+::: {.varxml .rep}  
 ###  Element `edmx:Edmx`
 
 The `edmx:Edmx` element is the root element of a CSDL XML document. It
diff --git a/docs/odata-csdl-xml/odata-csdl-xml.pdf b/docs/odata-csdl-xml/odata-csdl-xml.pdf
index 8aede4ba6..8c2e38c50 100644
Binary files a/docs/odata-csdl-xml/odata-csdl-xml.pdf and b/docs/odata-csdl-xml/odata-csdl-xml.pdf differ
diff --git a/docs/odata-data-aggregation-ext/odata-data-aggregation-ext.pdf b/docs/odata-data-aggregation-ext/odata-data-aggregation-ext.pdf
index 87625829d..6d2bddcb5 100644
Binary files a/docs/odata-data-aggregation-ext/odata-data-aggregation-ext.pdf and b/docs/odata-data-aggregation-ext/odata-data-aggregation-ext.pdf differ
diff --git a/docs/odata-json-format/odata-json-format.pdf b/docs/odata-json-format/odata-json-format.pdf
index 4f4e89281..df809073e 100644
Binary files a/docs/odata-json-format/odata-json-format.pdf and b/docs/odata-json-format/odata-json-format.pdf differ
diff --git a/docs/odata-protocol/odata-protocol.pdf b/docs/odata-protocol/odata-protocol.pdf
index 91e5248da..0136bdc4d 100644
Binary files a/docs/odata-protocol/odata-protocol.pdf and b/docs/odata-protocol/odata-protocol.pdf differ
diff --git a/docs/odata-url-conventions/odata-url-conventions.pdf b/docs/odata-url-conventions/odata-url-conventions.pdf
index 7f2bbfcf4..af05836e2 100644
Binary files a/docs/odata-url-conventions/odata-url-conventions.pdf and b/docs/odata-url-conventions/odata-url-conventions.pdf differ
diff --git a/lib/build-pdf.js b/lib/build-pdf.js
index f9cd60842..a3a0b6abd 100644
--- a/lib/build-pdf.js
+++ b/lib/build-pdf.js
@@ -1,22 +1,14 @@
+const iterator = require("./iterator");
 const pdf = require("./pdf.js");
-const fs = require("fs");
 
-fs.readdirSync(__dirname + "/..", { withFileTypes: true }).forEach(function (
-  doc
-) {
-  if (doc.isDirectory() && doc.name.startsWith("odata-")) {
-    fs.readdirSync(`${__dirname}/../${doc.name}`)
-      .filter((fn) => fn.endsWith(".yaml"))
-      .forEach(function (metaname) {
-        pdf(doc.name, metaname.substring(0, metaname.length - 5))
-          .then((refreshed) => {
-            if (refreshed) console.log("✓ " + doc.name, metaname);
-          })
-          .catch((error) => {
-            console.log("❌ " + doc.name, metaname);
-            console.error(error);
-            process.exitCode = 1;
-          });
-      });
-  }
+iterator(function (srcname, name, variant, meta) {
+  pdf(name, variant, meta)
+    .then((refreshed) => {
+      console.log(refreshed ? "✓" : "=", srcname, variant);
+    })
+    .catch((error) => {
+      console.log("❌", srcname, variant);
+      console.error(error);
+      process.exitCode = 1;
+    });
 });
diff --git a/lib/build.js b/lib/build.js
index 41db7e3d4..d2e61812b 100644
--- a/lib/build.js
+++ b/lib/build.js
@@ -1,57 +1,40 @@
+const iterator = require("./iterator");
 const fs = require("fs");
 const Number = require("./number");
 const pandoc = require("./pandoc");
 const { PassThrough } = require("stream");
-const yaml = require("js-yaml");
 
-fs.readdirSync(__dirname + "/..", { withFileTypes: true }).forEach(function (
-  doc
-) {
-  if (doc.isDirectory() && doc.name.startsWith("odata-")) {
-    fs.readdirSync(`${__dirname}/../${doc.name}`)
-      .filter((fn) => fn.endsWith(".yaml"))
-      .forEach(function (metaname) {
-        var meta = yaml.load(
-          fs.readFileSync(`${__dirname}/../${doc.name}/${metaname}`)
-        );
-        var name =
-          metaname === "meta.yaml" || !meta.dirname ? doc.name : meta.dirname;
-        fs.cpSync(
-          `${__dirname}/../styles`,
-          `${__dirname}/../docs/${name}/styles`,
-          { recursive: true }
-        );
-        var md = fs.createWriteStream(
-          `${__dirname}/../docs/${name}/${name}.md`
-        );
-        var html = pandoc({
-          "--metadata-file": `${__dirname}/../${doc.name}/${metaname}`,
-        });
-        html.stdout.pipe(
-          fs.createWriteStream(`${__dirname}/../docs/${name}/${name}.html`)
-        );
-        md.write(Buffer.of(0xef, 0xbb, 0xbf));
-        new Number(doc.name, metaname.substring(0, metaname.length - 5))
-          .build(
-            new PassThrough()
-              .on("data", function (chunk) {
-                md.write(chunk);
-                html.stdin.write(chunk);
-              })
-              .on("end", function () {
-                md.end();
-                html.stdin.end();
-              })
-          )
-          .then(() => {
-            console.log("✓ " + doc.name, metaname);
-          })
-          .catch((err) => {
-            console.log("❌ " + doc.name, metaname);
-            console.error(err.join("\n"));
-            console.error();
-            process.exitCode = 1;
-          });
-      });
-  }
+iterator(function (srcname, name, variant, meta) {
+  fs.cpSync(`${__dirname}/../styles`, `${__dirname}/../docs/${name}/styles`, {
+    recursive: true,
+  });
+  var md = fs.createWriteStream(`${__dirname}/../docs/${name}/${name}.md`);
+  var html = pandoc({
+    "--metadata-file": `${__dirname}/../${srcname}/${variant}.yaml`,
+  });
+  html.stdout.pipe(
+    fs.createWriteStream(`${__dirname}/../docs/${name}/${name}.html`)
+  );
+  md.write(Buffer.of(0xef, 0xbb, 0xbf));
+  new Number(srcname, variant, meta)
+    .build(
+      new PassThrough()
+        .on("data", function (chunk) {
+          md.write(chunk);
+          html.stdin.write(chunk);
+        })
+        .on("end", function () {
+          md.end();
+          html.stdin.end();
+        })
+    )
+    .then(() => {
+      console.log("✓", srcname, variant);
+    })
+    .catch((err) => {
+      console.log("❌", srcname, variant);
+      console.error(err.join("\n"));
+      console.error();
+      process.exitCode = 1;
+    });
 });
diff --git a/lib/iterator.js b/lib/iterator.js
new file mode 100644
index 000000000..101ddfe7d
--- /dev/null
+++ b/lib/iterator.js
@@ -0,0 +1,26 @@
+const fs = require("fs");
+const yaml = require("js-yaml");
+
+module.exports = function (callback) {
+  fs.readdirSync(__dirname + "/..", { withFileTypes: true }).forEach(function (
+    doc
+  ) {
+    if (doc.isDirectory() && doc.name.startsWith("odata-")) {
+      fs.readdirSync(`${__dirname}/../${doc.name}`)
+        .filter((fn) => fn.endsWith(".yaml"))
+        .forEach(function (metaname) {
+          var meta = yaml.load(
+            fs.readFileSync(`${__dirname}/../${doc.name}/${metaname}`)
+          );
+          var name =
+            metaname === "meta.yaml" || !meta.dirname ? doc.name : meta.dirname;
+          callback(
+            doc.name,
+            name,
+            metaname.substring(0, metaname.length - 5),
+            meta
+          );
+        });
+    }
+  });
+};
diff --git a/lib/number.js b/lib/number.js
index 4112dd19a..96c34933d 100644
--- a/lib/number.js
+++ b/lib/number.js
@@ -5,16 +5,18 @@ const yaml = require("js-yaml");
 const { compareSectionNumbers } = require("./utilities");
 
 class Number {
-  constructor(dir, variant) {
+  constructor(dir, variant, meta) {
     this.dir = dir;
     this.variant = variant;
     this.chapters = fs
       .readdirSync(dir)
       .filter((fn) => fn.endsWith(".md"))
       .sort(compareSectionNumbers);
-    this.meta = yaml.load(
-      fs.readFileSync(dir + "/" + (this.variant || "meta") + ".yaml")
-    );
+    this.meta =
+      meta ||
+      yaml.load(
+        fs.readFileSync(dir + "/" + (this.variant || "meta") + ".yaml")
+      );
   }
 
   secno(type) {
diff --git a/lib/pdf.js b/lib/pdf.js
index 24c596e87..6c75ecd48 100644
--- a/lib/pdf.js
+++ b/lib/pdf.js
@@ -1,13 +1,8 @@
 const puppeteer = require("puppeteer");
 const fs = require("fs");
 const url = require("url");
-const yaml = require("js-yaml");
 
-module.exports = async function (name, variant, force) {
-  const meta = yaml.load(
-    fs.readFileSync(`${__dirname}/../${name}/${variant}.yaml`)
-  );
-  if (variant !== "meta" || meta.dirname) name = meta.dirname;
+module.exports = async function (name, _variant, meta, force) {
   if (!force) {
     const htmlFile = `${__dirname}/../docs/${name}/${name}.html`;
     const pdfFile = `${__dirname}/../docs/${name}/${name}.pdf`;
diff --git a/lib/server.js b/lib/server.js
index 2c3f112fe..616e2ed14 100644
--- a/lib/server.js
+++ b/lib/server.js
@@ -4,7 +4,7 @@ const pandoc = require("./pandoc");
 const http = require("http");
 const { execSync } = require("child_process");
 const path = require("path");
-const fs = require("fs");
+const iterator = require("./iterator");
 
 const livereload = require("livereload");
 const liveReloadServer = livereload.createServer({ extraExts: ["md"] });
@@ -14,50 +14,42 @@ const connectLivereload = require("connect-livereload");
 
 var app = express()
   .use(connectLivereload())
-  .use(express.static(__dirname + "/../docs"))
-  .get("/", function (req, res, next) {
-    const docs = fs
-      .readdirSync(__dirname + "/..", { withFileTypes: true })
-      .filter((doc) => doc.isDirectory() && doc.name.startsWith("odata-"))
-      .map((doc) => `
  • ${doc.name}
  • `); + .use("/styles", express.static(`${__dirname}/../styles`)) + .get("/", function (_req, res, _next) { + var docs = []; + iterator(function (srcname, name, variant) { + docs.push(`
  • ${name}
  • `); + }); res.send(`

    Documents

      ${docs.join("")}
    `); }) - .get("/*", function (req, res, next) { - if (req.path.endsWith("/")) { - try { - var branch = execSync("git branch --show-current", { - cwd: __dirname, - }).toString(); - if (branch) req.query["-T"] = branch; - } catch (e) {} - var dir = req.params[0].substring(0, req.params[0].length - 1); - try { - var number = new Number(__dirname + "/../" + dir, req.query.variant); - var meta = - __dirname + - "/../" + - dir + - "/" + - (req.query.variant || "meta") + - ".yaml"; - delete req.query.variant; - res.type("html"); - var proc = pandoc({ - "--metadata-file": meta, - ...req.query, - }); - proc.stdout.pipe(res); - number.build(proc.stdin).catch((err) => { - console.error(); - console.error(err.join("\n")); - }); - } catch (err) { - next(); - } - } else { - var url = new URL("s://" + req.originalUrl); - url.pathname += "/"; - res.redirect(url.href.substring(4)); + .get("/:doc", function (req, res, next) { + try { + var branch = execSync("git branch --show-current", { + cwd: __dirname, + }).toString(); + if (branch) req.query["-T"] = branch; + } catch (e) {} + try { + var number = new Number( + __dirname + "/../" + req.params.doc, + req.query.variant + ); + var meta = `${__dirname}/../${req.params.doc}/${ + req.query.variant || "meta" + }.yaml`; + delete req.query.variant; + res.type("html"); + var proc = pandoc({ + "--metadata-file": meta, + ...req.query, + }); + proc.stdout.pipe(res); + number.build(proc.stdin).catch((err) => { + console.error(); + console.error(err.join("\n")); + }); + } catch (err) { + next(); } }); diff --git a/odata-csdl-xml/0 frontmatter.md b/odata-csdl-xml/0 frontmatter.md deleted file mode 100644 index e6f64062d..000000000 --- a/odata-csdl-xml/0 frontmatter.md +++ /dev/null @@ -1,90 +0,0 @@ - -![OASIS Logo](https://docs.oasis-open.org/templates/OASISLogo-v3.0.png) - -------- - -# OData Common Schema Definition Language (CSDL) XML Representation Version 4.02 - -## Committee Specification Draft 01 - -## 14 July 2023 - -  - -#### This stage: -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/$$$stage$$$/$$$filename$$$.md (Authoritative) \ -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/$$$stage$$$/$$$filename$$$.html \ -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/$$$stage$$$/$$$filename$$$.pdf - -#### Previous stage: -N/A - -#### Latest stage: -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.md (Authoritative) \ -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.html \ -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.pdf - -#### Technical Committee: -[OASIS Open Data Protocol (OData) TC](https://www.oasis-open.org/committees/odata/) - -#### Chairs: - -Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ -Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) - -#### Editors: - -Ralf Handl (ralf.handl@sap.com), [SAP SE](http://www.sap.com/) \ -Michael Pizzo (mikep@microsoft.com), [Microsoft](http://www.microsoft.com/) \ -Heiko Theißen (heiko.theissen@sap.com), [SAP SE](http://www.sap.com/) - -#### Additional artifacts: -This prose specification is one component of a Work Product that also includes: -* XML schemas: (list file names or directory name) -* Other parts (list titles and/or file names) -* `(Note: Any normative computer language definitions that are part of the Work Product, such as XML instances, schemas and Java(TM) code, including fragments of such, must be (a) well formed and valid, (b) provided in separate plain text files, (c) referenced from the Work Product; and (d) where any definition in these separate files disagrees with the definition found in the specification, the definition in the separate file prevails. Remove this note before submitting for publication.)` - -#### Related work: -This specification replaces or supersedes: -* _OData Common Schema Definition Language (CSDL) XML Representation Version 4.01_. Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. OASIS Standard. Latest stage: https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html. - -This specification is related to: -* _OData Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. A multi-part Work Product that includes: - * _OData Version 4.02 Part 1: Protocol_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part1-protocol.html - * _OData Version 4.02 Part 2: URL Conventions_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part2-url-conventions.html - -#### Abstract: -OData services are described by an Entity Model (EDM). The Common Schema Definition Language (CSDL) defines specific representations of the entity data model exposed by an OData service using, XML, JSON, and other formats. This document (OData CSDL XML Representation) specifically defines the XML representation of CSDL. - -#### Status: -This document was last revised or approved by the OASIS Open Data Protocol (OData) TC on the above date. The level of approval is also listed above. Check the "Latest stage" location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata#technical. - -TC members should send comments on this specification to the TC's email list. Others should send comments to the TC's public comment list, after subscribing to it by following the instructions at the "[Send A Comment](https://www.oasis-open.org/committees/comments/index.php?wg_abbrev=odata)" button on the TC's web page at https://www.oasis-open.org/committees/odata/. - -This specification is provided under the [RF on RAND Terms Mode](https://www.oasis-open.org/policies-guidelines/ipr/#RF-on-RAND-Mode) of the [OASIS IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/), the mode chosen when the Technical Committee was established. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC's web page (https://www.oasis-open.org/committees/odata/ipr.php). - -Note that any machine-readable content ([Computer Language Definitions](https://www.oasis-open.org/policies-guidelines/tc-process-2017-05-26/#wpComponentsCompLang)) declared Normative for this Work Product is provided in separate plain text files. In the event of a discrepancy between any such plain text file and display content in the Work Product's prose narrative document(s), the content in the separate plain text file prevails. - -#### Key words: -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [[RFC2119](#rfc2119)] and [[RFC8174](#rfc8174)] when, and only when, they appear in all capitals, as shown here. - -#### Citation format: -When referencing this specification the following citation format should be used: - -**[OData-CSDL-XML-v4.02]** - -_OData Common Schema Definition Language (CSDL) XML Representation Version 4.02_. -Edited by Ralf Handl, Michael Pizzo, and Heiko Theißen. 14 July 2023. OASIS Committee Specification Draft 01. -https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/$$$stage$$$/$$$filename$$$.html. -Latest stage: https://docs.oasis-open.org/odata/odata-csdl-xml/v4.02/odata-csdl-xml-v4.02.html. - -#### Notices -Copyright © OASIS Open 2023. All Rights Reserved. - -Distributed under the terms of the OASIS [IPR Policy](https://www.oasis-open.org/policies-guidelines/ipr/). - -The name "OASIS" is a trademark of [OASIS](https://www.oasis-open.org/), the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. - -For complete copyright information please see the full Notices section in an Appendix below. - -------- diff --git a/odata-csdl-xml/1 TODO.md b/odata-csdl-xml/1 TODO.md deleted file mode 100644 index 44c5bdfba..000000000 --- a/odata-csdl-xml/1 TODO.md +++ /dev/null @@ -1,224 +0,0 @@ -------- - -# ##sec Introduction - - - -## ##subsec Changes from earlier Versions - - - - -## ##subsec Glossary - -### ##subsubsec Definitions of terms - - -TODO: find out why we need a $dummy$ formula to get `monospace` look as we want it. - -### ##subsubsec Acronyms and abbreviations - - - -### ##subsubsec Document conventions - -Keywords defined by this specification use `this monospaced font`. - -Some sections of this specification are illustrated with non-normative examples. - -::: example -Example ##ex: text describing an example uses this paragraph style -``` -Non-normative examples use this paragraph style. -``` -::: - -All examples in this document are non-normative and informative only. Examples labeled with ⚠ contain advanced concepts or make use of keywords that are defined only later in the text, they can be skipped at first reading. - -All other text is normative unless otherwise labeled. - -::: example -Here is a customized command line which will generate HTML from this markdown file (named `$$$filename$$$.md`). Line breaks are added for readability only: - -``` -pandoc -f gfm+tex_math_dollars+fenced_divs - -t html - -o $$$filename$$$.html - -c styles/markdown-styles-v1.7.3b.css - -c styles/odata.css - -s - --mathjax - --eol=lf - --wrap=none - --metadata pagetitle="$$$pagetitle$$$" - $$$filename$$$.md -``` - -This uses pandoc 3.1.2 from https://github.com/jgm/pandoc/releases/tag/3.1.2. -::: - -------- - -# 2 Section Heading -text. - -## 2.1 Level 2 Heading -text. - -### 2.1.1 Level 3 Heading -text. - -#### 2.1.1.1 Level 4 Heading -text. - -##### 2.1.1.1.1 Level 5 Heading -This is the deepest level, because six # gets transformed into a Reference tag. - - -## 2.2 Next Heading -text. - -------- - -# 3 Conformance - - -`(Note: The [OASIS TC Process](https://www.oasis-open.org/policies-guidelines/tc-process-2017-05-26/#wpComponentsConfClause) requires that a specification approved by the TC at the Committee Specification Public Review Draft, Committee Specification or OASIS Standard level must include a separate section, listing a set of numbered conformance clauses, to which any implementation of the specification must adhere in order to claim conformance to the specification (or any optional portion thereof). This is done by listing the conformance clauses here.` -`For the definition of "conformance clause," see [OASIS Defined Terms](https://www.oasis-open.org/policies-guidelines/oasis-defined-terms-2018-05-22/#dConformanceClause).` - -`See "Guidelines to Writing Conformance Clauses": -https://docs.oasis-open.org/templates/TCHandbook/ConformanceGuidelines.html.` - -`Remove this note before submitting for publication.)` - - -------- - -# Appendix A. References - - - -This appendix contains the normative and informative references that are used in this document. - -While any hyperlinks included in this appendix were valid at the time of publication, OASIS cannot guarantee their long-term validity. - -## A.1 Normative References - -The following documents are referenced in such a way that some or all of their content constitutes requirements of this document. - -`(Reference sources: -For references to IETF RFCs, use the approved citation formats at: -https://docs.oasis-open.org/templates/ietf-rfc-list/ietf-rfc-list.html. -For references to W3C Recommendations, use the approved citation formats at: -https://docs.oasis-open.org/templates/w3c-recommendations-list/w3c-recommendations-list.html. -Remove this note before submitting for publication.)` - -###### [OData-v4.02] -* _OData Version 4.02_. Edited by Michael Pizzo, Ralf Handl, and Heiko Theißen. A multi-part Work Product that includes: - * _OData Version 4.02 Part 1: Protocol_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part1-protocol.html - * _OData Version 4.02 Part 2: URL Conventions_. Latest stage. https://docs.oasis-open.org/odata/odata/v4.02/odata-v4.02-part2-url-conventions.html - -##### [RFC2119] -_Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997_ -http://www.rfc-editor.org/info/rfc2119. - -###### [RFC8174] -_Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017_ -http://www.rfc-editor.org/info/rfc8174. - -## A.2 Informative References - -###### [RFC3552] -_Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, DOI 10.17487/RFC3552, July 2003_ -https://www.rfc-editor.org/info/rfc3552. - -------- - -# Appendix B. Safety, Security and Privacy Considerations - - - -`(Note: OASIS strongly recommends that Technical Committees consider issues that might affect safety, security, privacy, and/or data protection in implementations of their specification and document them for implementers and adopters. For some purposes, you may find it required, e.g. if you apply for IANA registration.` - -`While it may not be immediately obvious how your specification might make systems vulnerable to attack, most specifications, because they involve communications between systems, message formats, or system settings, open potential channels for exploit. For example, IETF [[RFC3552](#rfc3552)] lists “eavesdropping, replay, message insertion, deletion, modification, and man-in-the-middle” as well as potential denial of service attacks as threats that must be considered and, if appropriate, addressed in IETF RFCs.` - -`In addition to considering and describing foreseeable risks, this section should include guidance on how implementers and adopters can protect against these risks.` - -`We encourage editors and TC members concerned with this subject to read _Guidelines for Writing RFC Text on Security Considerations_, IETF [[RFC3552](#rfc3552)], for more information.` - -`Remove this note before submitting for publication.)` - -------- - -# Appendix C. Acknowledgments - - - -`Note: A Work Product approved by the TC must include a list of people who participated in the development of the Work Product. This is generally done by collecting the list of names in this appendix. This list shall be initially compiled by the Chair, and any Member of the TC may add or remove their names from the list by request. Remove this note before submitting for publication.` - -## C.1 Special Thanks - - - -Substantial contributions to this document from the following individuals are gratefully acknowledged: - -Participant Name, Affiliation or "Individual Member" - -## C.2 Participants - - - -The following individuals have participated in the creation of this specification and are gratefully acknowledged: - -**OpenC2 TC Members:** - -| First Name | Last Name | Company | -| :--- | :--- | :--- | -Philippe | Alman | Something Networks -Alex | Amirnovman | Company B -Kris | Anderman | Mini Micro -Darren | Anstman | Big Networks - -------- - -# Appendix D. Revision History - - - -| Revision | Date | Editor | Changes Made | -| :--- | :--- | :--- | :--- | -| specname-v1.0-wd01 | yyyy-mm-dd | Editor Name | Initial working draft | - -------- - -# Appendix E. Example Appendix with subsections - -## E.1 Subsection title - -### E.1.1 Sub-subsection - -------- - -# Appendix F. Notices - - - -Copyright © OASIS Open 2023. All Rights Reserved. - -All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full [Policy](https://www.oasis-open.org/policies-guidelines/ipr/) may be found at the OASIS website. - -This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English. - -The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. - -This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -As stated in the OASIS IPR Policy, the following three paragraphs in brackets apply to OASIS Standards Final Deliverable documents (Committee Specification, OASIS Standard, or Approved Errata). - -[OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Standards Final Deliverable, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this deliverable.] - -[OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this OASIS Standards Final Deliverable by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this OASIS Standards Final Deliverable. OASIS may include such claims on its website, but disclaims any obligation to do so.] - -[OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this OASIS Standards Final Deliverable or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Standards Final Deliverable, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.] - -The name "OASIS" is a trademark of [OASIS](https://www.oasis-open.org/), the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see https://www.oasis-open.org/policies-guidelines/trademark/ for above guidance. diff --git a/odata-csdl-json/0 frontmatter.md b/odata-csdl/0 frontmatter.md similarity index 100% rename from odata-csdl-json/0 frontmatter.md rename to odata-csdl/0 frontmatter.md diff --git a/odata-csdl-json/1 Introduction.md b/odata-csdl/1 Introduction.md similarity index 98% rename from odata-csdl-json/1 Introduction.md rename to odata-csdl/1 Introduction.md index 06fb91886..d5abe118b 100644 --- a/odata-csdl-json/1 Introduction.md +++ b/odata-csdl/1 Introduction.md @@ -69,7 +69,7 @@ pandoc -f gfm+tex_math_dollars+fenced_divs This uses pandoc 3.1.2 from https://github.com/jgm/pandoc/releases/tag/3.1.2. ::: -: varjson +: varjson # ##sec JSON Representation OData CSDL JSON is a full representation of the OData Common Schema @@ -230,7 +230,9 @@ of doubt on what makes a CSDL JSON document correct the rules defined in this specification document take precedence. : -: varxml + +: varxml # ##sec XML Representation OData CSDL XML is a full representation of the OData Common Schema diff --git a/odata-csdl-json/4 CSDL Document.md b/odata-csdl/4 CSDL Document.md similarity index 98% rename from odata-csdl-json/4 CSDL Document.md rename to odata-csdl/4 CSDL Document.md index d3278227b..773b5bff0 100644 --- a/odata-csdl-json/4 CSDL Document.md +++ b/odata-csdl/4 CSDL Document.md @@ -7,7 +7,7 @@ # ##sec CSDL XML Document : -::: {.varjson .rep} +::: {.varjson .rep} ### ##isec Document Object A CSDL JSON document consists of a single JSON object. This document object MUST contain the member `$Version`. @@ -38,7 +38,7 @@ Example ##ex: ``` ::: -::: {.varxml .rep} +::: {.varxml .rep} ### ##isec Element `edmx:Edmx` The `edmx:Edmx` element is the root element of a CSDL XML document. It diff --git a/odata-csdl-json/5 Schema.md b/odata-csdl/5 Schema.md similarity index 100% rename from odata-csdl-json/5 Schema.md rename to odata-csdl/5 Schema.md diff --git a/odata-csdl-json/Appendix.md b/odata-csdl/Appendix.md similarity index 100% rename from odata-csdl-json/Appendix.md rename to odata-csdl/Appendix.md diff --git a/odata-csdl-json/json.yaml b/odata-csdl/json.yaml similarity index 100% rename from odata-csdl-json/json.yaml rename to odata-csdl/json.yaml diff --git a/odata-csdl-json/temp/odata-csdl-json-v4.01-os-clean.html b/odata-csdl/temp/odata-csdl-json-v4.01-os-clean.html similarity index 100% rename from odata-csdl-json/temp/odata-csdl-json-v4.01-os-clean.html rename to odata-csdl/temp/odata-csdl-json-v4.01-os-clean.html diff --git a/odata-csdl-json/temp/odata-csdl-json-v4.01-os-raw.md b/odata-csdl/temp/odata-csdl-json-v4.01-os-raw.md similarity index 100% rename from odata-csdl-json/temp/odata-csdl-json-v4.01-os-raw.md rename to odata-csdl/temp/odata-csdl-json-v4.01-os-raw.md diff --git a/odata-csdl-json/temp/odata-csdl-json-v4.01-os.html b/odata-csdl/temp/odata-csdl-json-v4.01-os.html similarity index 100% rename from odata-csdl-json/temp/odata-csdl-json-v4.01-os.html rename to odata-csdl/temp/odata-csdl-json-v4.01-os.html diff --git a/odata-csdl-json/temp/odata-csdl-json-v4.01-os.md b/odata-csdl/temp/odata-csdl-json-v4.01-os.md similarity index 100% rename from odata-csdl-json/temp/odata-csdl-json-v4.01-os.md rename to odata-csdl/temp/odata-csdl-json-v4.01-os.md diff --git a/odata-csdl-xml/temp/odata-csdl-xml-v4.01-os-clean.html b/odata-csdl/temp/odata-csdl-xml-v4.01-os-clean.html similarity index 100% rename from odata-csdl-xml/temp/odata-csdl-xml-v4.01-os-clean.html rename to odata-csdl/temp/odata-csdl-xml-v4.01-os-clean.html diff --git a/odata-csdl-xml/temp/odata-csdl-xml-v4.01-os-raw.md b/odata-csdl/temp/odata-csdl-xml-v4.01-os-raw.md similarity index 100% rename from odata-csdl-xml/temp/odata-csdl-xml-v4.01-os-raw.md rename to odata-csdl/temp/odata-csdl-xml-v4.01-os-raw.md diff --git a/odata-csdl-xml/temp/odata-csdl-xml-v4.01-os.html b/odata-csdl/temp/odata-csdl-xml-v4.01-os.html similarity index 100% rename from odata-csdl-xml/temp/odata-csdl-xml-v4.01-os.html rename to odata-csdl/temp/odata-csdl-xml-v4.01-os.html diff --git a/odata-csdl-xml/temp/odata-csdl-xml-v4.01-os.md b/odata-csdl/temp/odata-csdl-xml-v4.01-os.md similarity index 100% rename from odata-csdl-xml/temp/odata-csdl-xml-v4.01-os.md rename to odata-csdl/temp/odata-csdl-xml-v4.01-os.md diff --git a/odata-csdl-json/xml.yaml b/odata-csdl/xml.yaml similarity index 100% rename from odata-csdl-json/xml.yaml rename to odata-csdl/xml.yaml